Open bobcao3 opened 1 year ago
Here to track the progress on the API surface (adding return status, adding documentation & specs, removing STL, or other changes):
shader resource set
and raster-state set
rw_buffer
buffer
image
rw_image
vertex_buffer
index_buffer
bind_pipeline
bind_resources
buffer_barrier
memory_barrier
buffer_copy
buffer_fill
dispatch
begin_renderpass
end_renderpass
draw
draw_instance
set_line_width
draw_indexed
draw_indexed_instance
image_transition
buffer_to_image
image_to_buffer
copy_image
blit_image
signal_event
reset_event
wait_event
new_command_list
submit
submit_synced
command_sync
device_time_elapsed_us
Redesign?allocate_memory
dealloc_memory
get_memory_physical_pointer
create_pipeline
create_event
allocate_memory_unique
fetch_result_uint64
Removeget_compute_stream
wait_idle
map_range
map
unmap
share_to
Redesign?memcpy_internal
Move / Redesign?check_memcpy_capability
Move / Redesign?memcpy_direct
Move / Redesign?memcpy_via_staging
Move / Redesign?memcpy_via_host
Move / Redesign?arch
get_caps
set_caps
acquire_next_image
get_target_image
present_image
get_size
get_image_count
image_format
resize
get_depth_data
Move / Redesignget_image_data
Move / Redesigncreate_raster_pipeline
get_graphics_stream
create_surface
Redesign?create_image
destroy_image
image_transition
Remove?buffer_to_image
Move / Redesignimage_to_buffer
Move / RedesignDX11 Impl tracker: #6879 Vulkan Impl tracker: #6880 OpenGL Impl tracker: #6881 Metal Impl tracker: #6882
The long term goal for the Unified Device API, or the RHI, is to be isolated into its own repo and maintained separately from Taichi. Where we will create its own unit tests and integration tests to improve robustness and maintain strong isolation boundary between them.
In the end, we want to achieve these goals for the future RHI:
To achieve this goal while not hugely breaking the workflow and goals within Taichi, we will start by progressively trimming away dependencies of RHI. This hopefully will eventually lead to a clean separation when we move RHI outside of Taichi repo. Here are the first steps:
ir.h
,program.h
, LLVM, eigen, etc.)TI_XXX
andspdlog
based logging when required (use MACRO, log less, and use what's provided by standard library)noexcept
) and use clear status return values. (This reduces generated code size and helps with C-API impl)