From 9f61ecc655d848acef9dd712a87f3a8f256f13e4 Mon Sep 17 00:00:00 2001 From: RDW Date: Mon, 19 Feb 2024 07:38:25 +0100 Subject: [PATCH] Refactor: Rename the webgpu library to wgpu I don't see support for Dawn on the horizon. This makes it clearer the bindings are for wgpu and it also saves some typing. --- .cppcheck | 2 +- .github/workflows/ci-linux.yml | 4 +- .github/workflows/ci-mac.yml | 4 +- .github/workflows/ci-windows.yml | 4 +- BuildTools/Targets/EvoBuildTarget.lua | 6 +- Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp | 264 ------------------ .../FFI/{webgpu/webgpu.lua => wgpu/wgpu.lua} | 17 +- .../webgpu_aliases.h => wgpu/wgpu_aliases.h} | 0 .../webgpu_exports.h => wgpu/wgpu_exports.h} | 2 +- Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp | 264 ++++++++++++++++++ .../webgpu_ffi.hpp => wgpu/wgpu_ffi.hpp} | 4 +- Runtime/evo.lua | 4 +- Runtime/main.cpp | 4 +- ...library.spec.lua => wgpu-library.spec.lua} | 2 +- Tests/Integration/glfw-webgpu-surface.lua | 14 +- Tests/Integration/rml-glfw-wgpu-setup.lua | 8 +- Tests/unit-test.lua | 2 +- deps/unixbuild-all.sh | 2 +- ...{webgpu-unixbuild.sh => wgpu-unixbuild.sh} | 0 ...u-windowsbuild.sh => wgpu-windowsbuild.sh} | 0 deps/windowsbuild-all.sh | 2 +- 21 files changed, 304 insertions(+), 305 deletions(-) delete mode 100644 Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp rename Runtime/Bindings/FFI/{webgpu/webgpu.lua => wgpu/wgpu.lua} (99%) rename Runtime/Bindings/FFI/{webgpu/webgpu_aliases.h => wgpu/wgpu_aliases.h} (100%) rename Runtime/Bindings/FFI/{webgpu/webgpu_exports.h => wgpu/wgpu_exports.h} (99%) create mode 100644 Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp rename Runtime/Bindings/FFI/{webgpu/webgpu_ffi.hpp => wgpu/wgpu_ffi.hpp} (57%) rename Tests/BDD/{webgpu-library.spec.lua => wgpu-library.spec.lua} (99%) rename deps/{webgpu-unixbuild.sh => wgpu-unixbuild.sh} (100%) rename deps/{webgpu-windowsbuild.sh => wgpu-windowsbuild.sh} (100%) diff --git a/.cppcheck b/.cppcheck index 6df3b44ec..bb8e5df97 100644 --- a/.cppcheck +++ b/.cppcheck @@ -23,7 +23,7 @@ unusedStructMember:Runtime/Bindings/FFI/runtime/runtime_exports.hpp unusedStructMember:Runtime/Bindings/FFI/stbi/stbi_exports.hpp unusedStructMember:Runtime/Bindings/FFI/stduuid/stduuid_exports.hpp unusedStructMember:Runtime/Bindings/FFI/uws/uws_exports.hpp -unusedStructMember:Runtime/Bindings/FFI/webgpu/webgpu_exports.hpp +unusedStructMember:Runtime/Bindings/FFI/wgpu/wgpu_exports.hpp // PerSocketData is actually used, but cppcheck can't see it unusedStructMember:Runtime/Bindings/FFI/WebServer.hpp diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml index bd17e84fa..f67034ddf 100644 --- a/.github/workflows/ci-linux.yml +++ b/.github/workflows/ci-linux.yml @@ -67,8 +67,8 @@ jobs: - name: Build luajit run: deps/luajit-unixbuild.sh && ls ninjabuild-unix - - name: Build webgpu - run: deps/webgpu-unixbuild.sh && ls ninjabuild-unix + - name: Build wgpu + run: deps/wgpu-unixbuild.sh && ls ninjabuild-unix - name: Build luv and libuv run: deps/luv-unixbuild.sh && ls ninjabuild-unix diff --git a/.github/workflows/ci-mac.yml b/.github/workflows/ci-mac.yml index 551e15315..f627b4e36 100644 --- a/.github/workflows/ci-mac.yml +++ b/.github/workflows/ci-mac.yml @@ -60,8 +60,8 @@ jobs: - name: Generate versions.lua # Required for those libraries that don't export versioning information run: deps/discover-submodule-versions.sh && cat deps/versions.lua - - name: Build webgpu - run: deps/webgpu-unixbuild.sh && ls ninjabuild-unix + - name: Build wgpu + run: deps/wgpu-unixbuild.sh && ls ninjabuild-unix - name: Build luv and libuv run: deps/luv-unixbuild.sh && ls ninjabuild-unix diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index a378880d3..2e3aef156 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -76,8 +76,8 @@ jobs: - name: Build luajit run: deps/luajit-windowsbuild.sh && ls ninjabuild-windows - - name: Build webgpu - run: deps/webgpu-windowsbuild.sh && ls ninjabuild-windows + - name: Build wgpu + run: deps/wgpu-windowsbuild.sh && ls ninjabuild-windows - name: Build luv and libuv run: deps/luv-windowsbuild.sh && ls ninjabuild-windows diff --git a/BuildTools/Targets/EvoBuildTarget.lua b/BuildTools/Targets/EvoBuildTarget.lua index 7668cb525..41a8d4740 100644 --- a/BuildTools/Targets/EvoBuildTarget.lua +++ b/BuildTools/Targets/EvoBuildTarget.lua @@ -40,7 +40,7 @@ local EvoBuildTarget = { "Runtime/Bindings/FFI/stbi/stbi.lua", "Runtime/Bindings/FFI/stduuid/stduuid.lua", "Runtime/Bindings/FFI/uws/uws.lua", - "Runtime/Bindings/FFI/webgpu/webgpu.lua", + "Runtime/Bindings/FFI/wgpu/wgpu.lua", "Runtime/Bindings/FFI/webview/webview.lua", "Runtime/Extensions/debugx.lua", "Runtime/Extensions/jsonx.lua", @@ -81,7 +81,7 @@ local EvoBuildTarget = { "Runtime/Bindings/FFI/stbi/stbi_ffi.cpp", "Runtime/Bindings/FFI/stduuid/stduuid_ffi.cpp", "Runtime/Bindings/FFI/uws/uws_ffi.cpp", - "Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp", + "Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp", "Runtime/Bindings/FFI/webview/webview_ffi.cpp", "Runtime/Bindings/lrexlib.cpp", "Runtime/Bindings/lzlib.cpp", @@ -103,7 +103,7 @@ local EvoBuildTarget = { "Runtime/Bindings/FFI/stbi", "Runtime/Bindings/FFI/stduuid", "Runtime/Bindings/FFI/uws", - "Runtime/Bindings/FFI/webgpu", + "Runtime/Bindings/FFI/wgpu", "Runtime/Bindings/FFI/webview", "deps", "deps/eliemichel/glfw3webgpu", diff --git a/Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp b/Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp deleted file mode 100644 index 8ffd75090..000000000 --- a/Runtime/Bindings/FFI/webgpu/webgpu_ffi.cpp +++ /dev/null @@ -1,264 +0,0 @@ -#include "webgpu_ffi.hpp" - -const char* wgpu_version() { - return WGPU_VERSION; -} - -namespace webgpu_ffi { - - void* getExportsTable() { - static struct static_webgpu_exports_table webgpu_exports_table; - - // Custom - webgpu_exports_table.wgpu_version = wgpu_version; - - // Global - webgpu_exports_table.wgpu_create_instance = wgpuCreateInstance; - webgpu_exports_table.wgpu_get_proc_address = wgpuGetProcAddress; - - // Adapter - webgpu_exports_table.wgpu_adapter_enumerate_features = wgpuAdapterEnumerateFeatures; - webgpu_exports_table.wgpu_adapter_get_limits = wgpuAdapterGetLimits; - webgpu_exports_table.wgpu_adapter_get_properties = wgpuAdapterGetProperties; - webgpu_exports_table.wgpu_adapter_has_feature = wgpuAdapterHasFeature; - webgpu_exports_table.wgpu_adapter_request_device = wgpuAdapterRequestDevice; - webgpu_exports_table.wgpu_adapter_reference = wgpuAdapterReference; - webgpu_exports_table.wgpu_adapter_release = wgpuAdapterRelease; - - // BindGroup - webgpu_exports_table.wgpu_bind_group_set_label = wgpuBindGroupSetLabel; - webgpu_exports_table.wgpu_bind_group_reference = wgpuBindGroupReference; - webgpu_exports_table.wgpu_bind_group_release = wgpuBindGroupRelease; - - // BindGroupLayout - webgpu_exports_table.wgpu_bind_group_layout_set_label = wgpuBindGroupLayoutSetLabel; - webgpu_exports_table.wgpu_bind_group_layout_reference = wgpuBindGroupLayoutReference; - webgpu_exports_table.wgpu_bind_group_layout_release = wgpuBindGroupLayoutRelease; - - // Buffer - webgpu_exports_table.wgpu_buffer_destroy = wgpuBufferDestroy; - webgpu_exports_table.wgpu_buffer_get_const_mapped_range = wgpuBufferGetConstMappedRange; - webgpu_exports_table.wgpu_buffer_get_map_state = wgpuBufferGetMapState; - webgpu_exports_table.wgpu_buffer_get_mapped_range = wgpuBufferGetMappedRange; - webgpu_exports_table.wgpu_buffer_get_size = wgpuBufferGetSize; - webgpu_exports_table.wgpu_buffer_get_usage = wgpuBufferGetUsage; - webgpu_exports_table.wgpu_buffer_map_async = wgpuBufferMapAsync; - webgpu_exports_table.wgpu_buffer_set_label = wgpuBufferSetLabel; - webgpu_exports_table.wgpu_buffer_unmap = wgpuBufferUnmap; - webgpu_exports_table.wgpu_buffer_reference = wgpuBufferReference; - webgpu_exports_table.wgpu_buffer_release = wgpuBufferRelease; - - // CommandBuffer - webgpu_exports_table.wgpu_command_buffer_reference = wgpuCommandBufferReference; - webgpu_exports_table.wgpu_command_buffer_release = wgpuCommandBufferRelease; - - // CommandEncoder - webgpu_exports_table.wgpu_command_encoder_begin_compute_pass = wgpuCommandEncoderBeginComputePass; - webgpu_exports_table.wgpu_command_encoder_begin_render_pass = wgpuCommandEncoderBeginRenderPass; - webgpu_exports_table.wgpu_command_encoder_clear_buffer = wgpuCommandEncoderClearBuffer; - webgpu_exports_table.wgpu_command_encoder_copy_buffer_to_buffer = wgpuCommandEncoderCopyBufferToBuffer; - webgpu_exports_table.wgpu_command_encoder_copy_buffer_to_texture = wgpuCommandEncoderCopyBufferToTexture; - webgpu_exports_table.wgpu_command_encoder_copy_texture_to_buffer = wgpuCommandEncoderCopyTextureToBuffer; - webgpu_exports_table.wgpu_command_encoder_copy_texture_to_texture = wgpuCommandEncoderCopyTextureToTexture; - webgpu_exports_table.wgpu_command_encoder_finish = wgpuCommandEncoderFinish; - webgpu_exports_table.wgpu_command_encoder_insert_debug_marker = wgpuCommandEncoderInsertDebugMarker; - webgpu_exports_table.wgpu_command_encoder_pop_debug_group = wgpuCommandEncoderPopDebugGroup; - webgpu_exports_table.wgpu_command_encoder_push_debug_group = wgpuCommandEncoderPushDebugGroup; - webgpu_exports_table.wgpu_command_encoder_resolve_query_set = wgpuCommandEncoderResolveQuerySet; - webgpu_exports_table.wgpu_command_encoder_set_label = wgpuCommandEncoderSetLabel; - webgpu_exports_table.wgpu_command_encoder_write_timestamp = wgpuCommandEncoderWriteTimestamp; - webgpu_exports_table.wgpu_command_encoder_reference = wgpuCommandEncoderReference; - webgpu_exports_table.wgpu_command_encoder_release = wgpuCommandEncoderRelease; - - // ComputePassEncoder - webgpu_exports_table.wgpu_compute_pass_encoder_dispatch_workgroups = wgpuComputePassEncoderDispatchWorkgroups; - webgpu_exports_table.wgpu_compute_pass_encoder_dispatch_workgroups_indirect = wgpuComputePassEncoderDispatchWorkgroupsIndirect; - webgpu_exports_table.wgpu_compute_pass_encoder_end = wgpuComputePassEncoderEnd; - webgpu_exports_table.wgpu_compute_pass_encoder_insert_debug_marker = wgpuComputePassEncoderInsertDebugMarker; - webgpu_exports_table.wgpu_compute_pass_encoder_pop_debug_group = wgpuComputePassEncoderPopDebugGroup; - webgpu_exports_table.wgpu_compute_pass_encoder_push_debug_group = wgpuComputePassEncoderPushDebugGroup; - webgpu_exports_table.wgpu_compute_pass_encoder_set_bind_group = wgpuComputePassEncoderSetBindGroup; - webgpu_exports_table.wgpu_compute_pass_encoder_set_label = wgpuComputePassEncoderSetLabel; - webgpu_exports_table.wgpu_compute_pass_encoder_set_pipeline = wgpuComputePassEncoderSetPipeline; - webgpu_exports_table.wgpu_compute_pass_encoder_reference = wgpuComputePassEncoderReference; - webgpu_exports_table.wgpu_compute_pass_encoder_release = wgpuComputePassEncoderRelease; - - // ComputePipeline - webgpu_exports_table.wgpu_compute_pipeline_get_bind_group_layout = wgpuComputePipelineGetBindGroupLayout; - webgpu_exports_table.wgpu_compute_pipeline_set_label = wgpuComputePipelineSetLabel; - webgpu_exports_table.wgpu_compute_pipeline_reference = wgpuComputePipelineReference; - webgpu_exports_table.wgpu_compute_pipeline_release = wgpuComputePipelineRelease; - - // Device - webgpu_exports_table.wgpu_device_create_bind_group = wgpuDeviceCreateBindGroup; - webgpu_exports_table.wgpu_device_create_bind_group_layout = wgpuDeviceCreateBindGroupLayout; - webgpu_exports_table.wgpu_device_create_buffer = wgpuDeviceCreateBuffer; - webgpu_exports_table.wgpu_device_create_command_encoder = wgpuDeviceCreateCommandEncoder; - webgpu_exports_table.wgpu_device_create_compute_pipeline = wgpuDeviceCreateComputePipeline; - webgpu_exports_table.wgpu_device_create_compute_pipeline_async = wgpuDeviceCreateComputePipelineAsync; - webgpu_exports_table.wgpu_device_create_pipeline_layout = wgpuDeviceCreatePipelineLayout; - webgpu_exports_table.wgpu_device_create_query_set = wgpuDeviceCreateQuerySet; - webgpu_exports_table.wgpu_device_create_render_bundle_encoder = wgpuDeviceCreateRenderBundleEncoder; - webgpu_exports_table.wgpu_device_create_render_pipeline = wgpuDeviceCreateRenderPipeline; - webgpu_exports_table.wgpu_device_create_render_pipeline_async = wgpuDeviceCreateRenderPipelineAsync; - webgpu_exports_table.wgpu_device_create_sampler = wgpuDeviceCreateSampler; - webgpu_exports_table.wgpu_device_create_shader_module = wgpuDeviceCreateShaderModule; - webgpu_exports_table.wgpu_device_create_texture = wgpuDeviceCreateTexture; - webgpu_exports_table.wgpu_device_destroy = wgpuDeviceDestroy; - webgpu_exports_table.wgpu_device_enumerate_features = wgpuDeviceEnumerateFeatures; - webgpu_exports_table.wgpu_device_get_limits = wgpuDeviceGetLimits; - webgpu_exports_table.wgpu_device_get_queue = wgpuDeviceGetQueue; - webgpu_exports_table.wgpu_device_has_feature = wgpuDeviceHasFeature; - webgpu_exports_table.wgpu_device_pop_error_scope = wgpuDevicePopErrorScope; - webgpu_exports_table.wgpu_device_push_error_scope = wgpuDevicePushErrorScope; - webgpu_exports_table.wgpu_device_set_label = wgpuDeviceSetLabel; - webgpu_exports_table.wgpu_device_set_uncaptured_error_callback = wgpuDeviceSetUncapturedErrorCallback; - webgpu_exports_table.wgpu_device_reference = wgpuDeviceReference; - webgpu_exports_table.wgpu_device_release = wgpuDeviceRelease; - - // Instance - webgpu_exports_table.wgpu_instance_create_surface = wgpuInstanceCreateSurface; - webgpu_exports_table.wgpu_instance_process_events = wgpuInstanceProcessEvents; - webgpu_exports_table.wgpu_instance_request_adapter = wgpuInstanceRequestAdapter; - webgpu_exports_table.wgpu_instance_reference = wgpuInstanceReference; - webgpu_exports_table.wgpu_instance_release = wgpuInstanceRelease; - - // PipelineLayout - webgpu_exports_table.wgpu_pipeline_layout_set_label = wgpuPipelineLayoutSetLabel; - webgpu_exports_table.wgpu_pipeline_layout_reference = wgpuPipelineLayoutReference; - webgpu_exports_table.wgpu_pipeline_layout_release = wgpuPipelineLayoutRelease; - - // QuerySet - webgpu_exports_table.wgpu_query_set_destroy = wgpuQuerySetDestroy; - webgpu_exports_table.wgpu_query_set_get_count = wgpuQuerySetGetCount; - webgpu_exports_table.wgpu_query_set_get_type = wgpuQuerySetGetType; - webgpu_exports_table.wgpu_query_set_set_label = wgpuQuerySetSetLabel; - webgpu_exports_table.wgpu_query_set_reference = wgpuQuerySetReference; - webgpu_exports_table.wgpu_query_set_release = wgpuQuerySetRelease; - - // Queue - webgpu_exports_table.wgpu_queue_on_submitted_work_done = wgpuQueueOnSubmittedWorkDone; - webgpu_exports_table.wgpu_queue_set_label = wgpuQueueSetLabel; - webgpu_exports_table.wgpu_queue_submit = wgpuQueueSubmit; - webgpu_exports_table.wgpu_queue_write_buffer = wgpuQueueWriteBuffer; - webgpu_exports_table.wgpu_queue_write_texture = wgpuQueueWriteTexture; - webgpu_exports_table.wgpu_queue_reference = wgpuQueueReference; - webgpu_exports_table.wgpu_queue_release = wgpuQueueRelease; - - // RenderBundle - webgpu_exports_table.wgpu_render_bundle_set_label = wgpuRenderBundleSetLabel; - webgpu_exports_table.wgpu_render_bundle_reference = wgpuRenderBundleReference; - webgpu_exports_table.wgpu_render_bundle_release = wgpuRenderBundleRelease; - - // RenderBundleEncoder - webgpu_exports_table.wgpu_render_bundle_encoder_draw = wgpuRenderBundleEncoderDraw; - webgpu_exports_table.wgpu_render_bundle_encoder_draw_indexed = wgpuRenderBundleEncoderDrawIndexed; - webgpu_exports_table.wgpu_render_bundle_encoder_draw_indexed_indirect = wgpuRenderBundleEncoderDrawIndexedIndirect; - webgpu_exports_table.wgpu_render_bundle_encoder_draw_indirect = wgpuRenderBundleEncoderDrawIndirect; - webgpu_exports_table.wgpu_render_bundle_encoder_finish = wgpuRenderBundleEncoderFinish; - webgpu_exports_table.wgpu_render_bundle_encoder_insert_debug_marker = wgpuRenderBundleEncoderInsertDebugMarker; - webgpu_exports_table.wgpu_render_bundle_encoder_pop_debug_group = wgpuRenderBundleEncoderPopDebugGroup; - webgpu_exports_table.wgpu_render_bundle_encoder_push_debug_group = wgpuRenderBundleEncoderPushDebugGroup; - webgpu_exports_table.wgpu_render_bundle_encoder_set_bind_group = wgpuRenderBundleEncoderSetBindGroup; - webgpu_exports_table.wgpu_render_bundle_encoder_set_index_buffer = wgpuRenderBundleEncoderSetIndexBuffer; - webgpu_exports_table.wgpu_render_bundle_encoder_set_label = wgpuRenderBundleEncoderSetLabel; - webgpu_exports_table.wgpu_render_bundle_encoder_set_pipeline = wgpuRenderBundleEncoderSetPipeline; - webgpu_exports_table.wgpu_render_bundle_encoder_set_vertex_buffer = wgpuRenderBundleEncoderSetVertexBuffer; - webgpu_exports_table.wgpu_render_bundle_encoder_reference = wgpuRenderBundleEncoderReference; - webgpu_exports_table.wgpu_render_bundle_encoder_release = wgpuRenderBundleEncoderRelease; - - // RenderPassEncoder - webgpu_exports_table.wgpu_render_pass_encoder_begin_occlusion_query = wgpuRenderPassEncoderBeginOcclusionQuery; - webgpu_exports_table.wgpu_render_pass_encoder_draw = wgpuRenderPassEncoderDraw; - webgpu_exports_table.wgpu_render_pass_encoder_draw_indexed = wgpuRenderPassEncoderDrawIndexed; - webgpu_exports_table.wgpu_render_pass_encoder_draw_indexed_indirect = wgpuRenderPassEncoderDrawIndexedIndirect; - webgpu_exports_table.wgpu_render_pass_encoder_draw_indirect = wgpuRenderPassEncoderDrawIndirect; - webgpu_exports_table.wgpu_render_pass_encoder_end = wgpuRenderPassEncoderEnd; - webgpu_exports_table.wgpu_render_pass_encoder_end_occlusion_query = wgpuRenderPassEncoderEndOcclusionQuery; - webgpu_exports_table.wgpu_render_pass_encoder_execute_bundles = wgpuRenderPassEncoderExecuteBundles; - webgpu_exports_table.wgpu_render_pass_encoder_insert_debug_marker = wgpuRenderPassEncoderInsertDebugMarker; - webgpu_exports_table.wgpu_render_pass_encoder_pop_debug_group = wgpuRenderPassEncoderPopDebugGroup; - webgpu_exports_table.wgpu_render_pass_encoder_push_debug_group = wgpuRenderPassEncoderPushDebugGroup; - webgpu_exports_table.wgpu_render_pass_encoder_set_bind_group = wgpuRenderPassEncoderSetBindGroup; - webgpu_exports_table.wgpu_render_pass_encoder_set_blend_constant = wgpuRenderPassEncoderSetBlendConstant; - webgpu_exports_table.wgpu_render_pass_encoder_set_index_buffer = wgpuRenderPassEncoderSetIndexBuffer; - webgpu_exports_table.wgpu_render_pass_encoder_set_label = wgpuRenderPassEncoderSetLabel; - webgpu_exports_table.wgpu_render_pass_encoder_set_pipeline = wgpuRenderPassEncoderSetPipeline; - webgpu_exports_table.wgpu_render_pass_encoder_set_scissor_rect = wgpuRenderPassEncoderSetScissorRect; - webgpu_exports_table.wgpu_render_pass_encoder_set_stencil_reference = wgpuRenderPassEncoderSetStencilReference; - webgpu_exports_table.wgpu_render_pass_encoder_set_vertex_buffer = wgpuRenderPassEncoderSetVertexBuffer; - webgpu_exports_table.wgpu_render_pass_encoder_set_viewport = wgpuRenderPassEncoderSetViewport; - webgpu_exports_table.wgpu_render_pass_encoder_reference = wgpuRenderPassEncoderReference; - webgpu_exports_table.wgpu_render_pass_encoder_release = wgpuRenderPassEncoderRelease; - - // RenderPipeline - webgpu_exports_table.wgpu_render_pipeline_get_bind_group_layout = wgpuRenderPipelineGetBindGroupLayout; - webgpu_exports_table.wgpu_render_pipeline_set_label = wgpuRenderPipelineSetLabel; - webgpu_exports_table.wgpu_render_pipeline_reference = wgpuRenderPipelineReference; - webgpu_exports_table.wgpu_render_pipeline_release = wgpuRenderPipelineRelease; - - // Sampler - webgpu_exports_table.wgpu_sampler_set_label = wgpuSamplerSetLabel; - webgpu_exports_table.wgpu_sampler_reference = wgpuSamplerReference; - webgpu_exports_table.wgpu_sampler_release = wgpuSamplerRelease; - - // ShaderModule - webgpu_exports_table.wgpu_shader_module_get_compilation_info = wgpuShaderModuleGetCompilationInfo; - webgpu_exports_table.wgpu_shader_module_set_label = wgpuShaderModuleSetLabel; - webgpu_exports_table.wgpu_shader_module_reference = wgpuShaderModuleReference; - webgpu_exports_table.wgpu_shader_module_release = wgpuShaderModuleRelease; - - // Surface - webgpu_exports_table.wgpu_surface_configure = wgpuSurfaceConfigure; - webgpu_exports_table.wgpu_surface_get_capabilities = wgpuSurfaceGetCapabilities; - webgpu_exports_table.wgpu_surface_get_current_texture = wgpuSurfaceGetCurrentTexture; - webgpu_exports_table.wgpu_surface_get_preferred_format = wgpuSurfaceGetPreferredFormat; - webgpu_exports_table.wgpu_surface_present = wgpuSurfacePresent; - webgpu_exports_table.wgpu_surface_unconfigure = wgpuSurfaceUnconfigure; - webgpu_exports_table.wgpu_surface_reference = wgpuSurfaceReference; - webgpu_exports_table.wgpu_surface_release = wgpuSurfaceRelease; - - // SurfaceCapabilities - webgpu_exports_table.wgpu_surface_capabilities_free_members = wgpuSurfaceCapabilitiesFreeMembers; - - // Texture - webgpu_exports_table.wgpu_texture_create_view = wgpuTextureCreateView; - webgpu_exports_table.wgpu_texture_destroy = wgpuTextureDestroy; - webgpu_exports_table.wgpu_texture_get_depth_or_array_layers = wgpuTextureGetDepthOrArrayLayers; - webgpu_exports_table.wgpu_texture_get_dimension = wgpuTextureGetDimension; - webgpu_exports_table.wgpu_texture_get_format = wgpuTextureGetFormat; - webgpu_exports_table.wgpu_texture_get_height = wgpuTextureGetHeight; - webgpu_exports_table.wgpu_texture_get_mip_level_count = wgpuTextureGetMipLevelCount; - webgpu_exports_table.wgpu_texture_get_sample_count = wgpuTextureGetSampleCount; - webgpu_exports_table.wgpu_texture_get_usage = wgpuTextureGetUsage; - webgpu_exports_table.wgpu_texture_get_width = wgpuTextureGetWidth; - webgpu_exports_table.wgpu_texture_set_label = wgpuTextureSetLabel; - webgpu_exports_table.wgpu_texture_reference = wgpuTextureReference; - webgpu_exports_table.wgpu_texture_release = wgpuTextureRelease; - - // TextureView - webgpu_exports_table.wgpu_texture_view_set_label = wgpuTextureViewSetLabel; - webgpu_exports_table.wgpu_texture_view_reference = wgpuTextureViewReference; - webgpu_exports_table.wgpu_texture_view_release = wgpuTextureViewRelease; - - // Native wgpu extensions (from wgpu.h) - webgpu_exports_table.wgpu_generate_report = wgpuGenerateReport; - webgpu_exports_table.wgpu_instance_enumerate_adapters = wgpuInstanceEnumerateAdapters; - webgpu_exports_table.wgpu_queue_submit_for_index = wgpuQueueSubmitForIndex; - webgpu_exports_table.wgpu_device_poll = wgpuDevicePoll; - webgpu_exports_table.wgpu_set_log_callback = wgpuSetLogCallback; - webgpu_exports_table.wgpu_set_log_level = wgpuSetLogLevel; - webgpu_exports_table.wgpu_get_version = wgpuGetVersion; - webgpu_exports_table.wgpu_render_pass_encoder_set_push_constants = wgpuRenderPassEncoderSetPushConstants; - webgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indirect = wgpuRenderPassEncoderMultiDrawIndirect; - webgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indexed_indirect = wgpuRenderPassEncoderMultiDrawIndexedIndirect; - webgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indirect_count = wgpuRenderPassEncoderMultiDrawIndirectCount; - webgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indexed_indirect_count = wgpuRenderPassEncoderMultiDrawIndexedIndirectCount; - webgpu_exports_table.wgpu_compute_pass_encoder_begin_pipeline_statistics_query = wgpuComputePassEncoderBeginPipelineStatisticsQuery; - webgpu_exports_table.wgpu_compute_pass_encoder_end_pipeline_statistics_query = wgpuComputePassEncoderEndPipelineStatisticsQuery; - webgpu_exports_table.wgpu_render_pass_encoder_begin_pipeline_statistics_query = wgpuRenderPassEncoderBeginPipelineStatisticsQuery; - webgpu_exports_table.wgpu_render_pass_encoder_end_pipeline_statistics_query = wgpuRenderPassEncoderEndPipelineStatisticsQuery; - - return &webgpu_exports_table; - } -} \ No newline at end of file diff --git a/Runtime/Bindings/FFI/webgpu/webgpu.lua b/Runtime/Bindings/FFI/wgpu/wgpu.lua similarity index 99% rename from Runtime/Bindings/FFI/webgpu/webgpu.lua rename to Runtime/Bindings/FFI/wgpu/wgpu.lua index a1ec31800..5603f1518 100644 --- a/Runtime/Bindings/FFI/webgpu/webgpu.lua +++ b/Runtime/Bindings/FFI/wgpu/wgpu.lua @@ -1,9 +1,8 @@ local ffi = require("ffi") -local webgpu = {} +local wgpu = {} --- WebGPU API (from webgpu.h) -webgpu.cdefs = [[ +wgpu.cdefs = [[ // WebGPU API (from webgpu.h) typedef uint32_t WGPUFlags; typedef uint32_t WGPUBool; @@ -1635,7 +1634,7 @@ typedef struct WGPUSurfaceConfigurationExtras { typedef void (*WGPULogCallback)(WGPULogLevel level, char const* message, void* userdata); -struct static_webgpu_exports_table { +struct static_wgpu_exports_table { // Custom methods const char* (*wgpu_version)(); @@ -1900,12 +1899,12 @@ struct static_webgpu_exports_table { ]] -function webgpu.initialize() - ffi.cdef(webgpu.cdefs) +function wgpu.initialize() + ffi.cdef(wgpu.cdefs) end -function webgpu.version() - return ffi.string(webgpu.bindings.wgpu_version()) +function wgpu.version() + return ffi.string(wgpu.bindings.wgpu_version()) end -return webgpu +return wgpu diff --git a/Runtime/Bindings/FFI/webgpu/webgpu_aliases.h b/Runtime/Bindings/FFI/wgpu/wgpu_aliases.h similarity index 100% rename from Runtime/Bindings/FFI/webgpu/webgpu_aliases.h rename to Runtime/Bindings/FFI/wgpu/wgpu_aliases.h diff --git a/Runtime/Bindings/FFI/webgpu/webgpu_exports.h b/Runtime/Bindings/FFI/wgpu/wgpu_exports.h similarity index 99% rename from Runtime/Bindings/FFI/webgpu/webgpu_exports.h rename to Runtime/Bindings/FFI/wgpu/wgpu_exports.h index 8d9625b13..818eb6581 100644 --- a/Runtime/Bindings/FFI/webgpu/webgpu_exports.h +++ b/Runtime/Bindings/FFI/wgpu/wgpu_exports.h @@ -1,4 +1,4 @@ -struct static_webgpu_exports_table { +struct static_wgpu_exports_table { // Custom methods const char* (*wgpu_version)(); diff --git a/Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp b/Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp new file mode 100644 index 000000000..558369962 --- /dev/null +++ b/Runtime/Bindings/FFI/wgpu/wgpu_ffi.cpp @@ -0,0 +1,264 @@ +#include "wgpu_ffi.hpp" + +const char* wgpu_version() { + return WGPU_VERSION; +} + +namespace wgpu_ffi { + + void* getExportsTable() { + static struct static_wgpu_exports_table wgpu_exports_table; + + // Custom + wgpu_exports_table.wgpu_version = wgpu_version; + + // Global + wgpu_exports_table.wgpu_create_instance = wgpuCreateInstance; + wgpu_exports_table.wgpu_get_proc_address = wgpuGetProcAddress; + + // Adapter + wgpu_exports_table.wgpu_adapter_enumerate_features = wgpuAdapterEnumerateFeatures; + wgpu_exports_table.wgpu_adapter_get_limits = wgpuAdapterGetLimits; + wgpu_exports_table.wgpu_adapter_get_properties = wgpuAdapterGetProperties; + wgpu_exports_table.wgpu_adapter_has_feature = wgpuAdapterHasFeature; + wgpu_exports_table.wgpu_adapter_request_device = wgpuAdapterRequestDevice; + wgpu_exports_table.wgpu_adapter_reference = wgpuAdapterReference; + wgpu_exports_table.wgpu_adapter_release = wgpuAdapterRelease; + + // BindGroup + wgpu_exports_table.wgpu_bind_group_set_label = wgpuBindGroupSetLabel; + wgpu_exports_table.wgpu_bind_group_reference = wgpuBindGroupReference; + wgpu_exports_table.wgpu_bind_group_release = wgpuBindGroupRelease; + + // BindGroupLayout + wgpu_exports_table.wgpu_bind_group_layout_set_label = wgpuBindGroupLayoutSetLabel; + wgpu_exports_table.wgpu_bind_group_layout_reference = wgpuBindGroupLayoutReference; + wgpu_exports_table.wgpu_bind_group_layout_release = wgpuBindGroupLayoutRelease; + + // Buffer + wgpu_exports_table.wgpu_buffer_destroy = wgpuBufferDestroy; + wgpu_exports_table.wgpu_buffer_get_const_mapped_range = wgpuBufferGetConstMappedRange; + wgpu_exports_table.wgpu_buffer_get_map_state = wgpuBufferGetMapState; + wgpu_exports_table.wgpu_buffer_get_mapped_range = wgpuBufferGetMappedRange; + wgpu_exports_table.wgpu_buffer_get_size = wgpuBufferGetSize; + wgpu_exports_table.wgpu_buffer_get_usage = wgpuBufferGetUsage; + wgpu_exports_table.wgpu_buffer_map_async = wgpuBufferMapAsync; + wgpu_exports_table.wgpu_buffer_set_label = wgpuBufferSetLabel; + wgpu_exports_table.wgpu_buffer_unmap = wgpuBufferUnmap; + wgpu_exports_table.wgpu_buffer_reference = wgpuBufferReference; + wgpu_exports_table.wgpu_buffer_release = wgpuBufferRelease; + + // CommandBuffer + wgpu_exports_table.wgpu_command_buffer_reference = wgpuCommandBufferReference; + wgpu_exports_table.wgpu_command_buffer_release = wgpuCommandBufferRelease; + + // CommandEncoder + wgpu_exports_table.wgpu_command_encoder_begin_compute_pass = wgpuCommandEncoderBeginComputePass; + wgpu_exports_table.wgpu_command_encoder_begin_render_pass = wgpuCommandEncoderBeginRenderPass; + wgpu_exports_table.wgpu_command_encoder_clear_buffer = wgpuCommandEncoderClearBuffer; + wgpu_exports_table.wgpu_command_encoder_copy_buffer_to_buffer = wgpuCommandEncoderCopyBufferToBuffer; + wgpu_exports_table.wgpu_command_encoder_copy_buffer_to_texture = wgpuCommandEncoderCopyBufferToTexture; + wgpu_exports_table.wgpu_command_encoder_copy_texture_to_buffer = wgpuCommandEncoderCopyTextureToBuffer; + wgpu_exports_table.wgpu_command_encoder_copy_texture_to_texture = wgpuCommandEncoderCopyTextureToTexture; + wgpu_exports_table.wgpu_command_encoder_finish = wgpuCommandEncoderFinish; + wgpu_exports_table.wgpu_command_encoder_insert_debug_marker = wgpuCommandEncoderInsertDebugMarker; + wgpu_exports_table.wgpu_command_encoder_pop_debug_group = wgpuCommandEncoderPopDebugGroup; + wgpu_exports_table.wgpu_command_encoder_push_debug_group = wgpuCommandEncoderPushDebugGroup; + wgpu_exports_table.wgpu_command_encoder_resolve_query_set = wgpuCommandEncoderResolveQuerySet; + wgpu_exports_table.wgpu_command_encoder_set_label = wgpuCommandEncoderSetLabel; + wgpu_exports_table.wgpu_command_encoder_write_timestamp = wgpuCommandEncoderWriteTimestamp; + wgpu_exports_table.wgpu_command_encoder_reference = wgpuCommandEncoderReference; + wgpu_exports_table.wgpu_command_encoder_release = wgpuCommandEncoderRelease; + + // ComputePassEncoder + wgpu_exports_table.wgpu_compute_pass_encoder_dispatch_workgroups = wgpuComputePassEncoderDispatchWorkgroups; + wgpu_exports_table.wgpu_compute_pass_encoder_dispatch_workgroups_indirect = wgpuComputePassEncoderDispatchWorkgroupsIndirect; + wgpu_exports_table.wgpu_compute_pass_encoder_end = wgpuComputePassEncoderEnd; + wgpu_exports_table.wgpu_compute_pass_encoder_insert_debug_marker = wgpuComputePassEncoderInsertDebugMarker; + wgpu_exports_table.wgpu_compute_pass_encoder_pop_debug_group = wgpuComputePassEncoderPopDebugGroup; + wgpu_exports_table.wgpu_compute_pass_encoder_push_debug_group = wgpuComputePassEncoderPushDebugGroup; + wgpu_exports_table.wgpu_compute_pass_encoder_set_bind_group = wgpuComputePassEncoderSetBindGroup; + wgpu_exports_table.wgpu_compute_pass_encoder_set_label = wgpuComputePassEncoderSetLabel; + wgpu_exports_table.wgpu_compute_pass_encoder_set_pipeline = wgpuComputePassEncoderSetPipeline; + wgpu_exports_table.wgpu_compute_pass_encoder_reference = wgpuComputePassEncoderReference; + wgpu_exports_table.wgpu_compute_pass_encoder_release = wgpuComputePassEncoderRelease; + + // ComputePipeline + wgpu_exports_table.wgpu_compute_pipeline_get_bind_group_layout = wgpuComputePipelineGetBindGroupLayout; + wgpu_exports_table.wgpu_compute_pipeline_set_label = wgpuComputePipelineSetLabel; + wgpu_exports_table.wgpu_compute_pipeline_reference = wgpuComputePipelineReference; + wgpu_exports_table.wgpu_compute_pipeline_release = wgpuComputePipelineRelease; + + // Device + wgpu_exports_table.wgpu_device_create_bind_group = wgpuDeviceCreateBindGroup; + wgpu_exports_table.wgpu_device_create_bind_group_layout = wgpuDeviceCreateBindGroupLayout; + wgpu_exports_table.wgpu_device_create_buffer = wgpuDeviceCreateBuffer; + wgpu_exports_table.wgpu_device_create_command_encoder = wgpuDeviceCreateCommandEncoder; + wgpu_exports_table.wgpu_device_create_compute_pipeline = wgpuDeviceCreateComputePipeline; + wgpu_exports_table.wgpu_device_create_compute_pipeline_async = wgpuDeviceCreateComputePipelineAsync; + wgpu_exports_table.wgpu_device_create_pipeline_layout = wgpuDeviceCreatePipelineLayout; + wgpu_exports_table.wgpu_device_create_query_set = wgpuDeviceCreateQuerySet; + wgpu_exports_table.wgpu_device_create_render_bundle_encoder = wgpuDeviceCreateRenderBundleEncoder; + wgpu_exports_table.wgpu_device_create_render_pipeline = wgpuDeviceCreateRenderPipeline; + wgpu_exports_table.wgpu_device_create_render_pipeline_async = wgpuDeviceCreateRenderPipelineAsync; + wgpu_exports_table.wgpu_device_create_sampler = wgpuDeviceCreateSampler; + wgpu_exports_table.wgpu_device_create_shader_module = wgpuDeviceCreateShaderModule; + wgpu_exports_table.wgpu_device_create_texture = wgpuDeviceCreateTexture; + wgpu_exports_table.wgpu_device_destroy = wgpuDeviceDestroy; + wgpu_exports_table.wgpu_device_enumerate_features = wgpuDeviceEnumerateFeatures; + wgpu_exports_table.wgpu_device_get_limits = wgpuDeviceGetLimits; + wgpu_exports_table.wgpu_device_get_queue = wgpuDeviceGetQueue; + wgpu_exports_table.wgpu_device_has_feature = wgpuDeviceHasFeature; + wgpu_exports_table.wgpu_device_pop_error_scope = wgpuDevicePopErrorScope; + wgpu_exports_table.wgpu_device_push_error_scope = wgpuDevicePushErrorScope; + wgpu_exports_table.wgpu_device_set_label = wgpuDeviceSetLabel; + wgpu_exports_table.wgpu_device_set_uncaptured_error_callback = wgpuDeviceSetUncapturedErrorCallback; + wgpu_exports_table.wgpu_device_reference = wgpuDeviceReference; + wgpu_exports_table.wgpu_device_release = wgpuDeviceRelease; + + // Instance + wgpu_exports_table.wgpu_instance_create_surface = wgpuInstanceCreateSurface; + wgpu_exports_table.wgpu_instance_process_events = wgpuInstanceProcessEvents; + wgpu_exports_table.wgpu_instance_request_adapter = wgpuInstanceRequestAdapter; + wgpu_exports_table.wgpu_instance_reference = wgpuInstanceReference; + wgpu_exports_table.wgpu_instance_release = wgpuInstanceRelease; + + // PipelineLayout + wgpu_exports_table.wgpu_pipeline_layout_set_label = wgpuPipelineLayoutSetLabel; + wgpu_exports_table.wgpu_pipeline_layout_reference = wgpuPipelineLayoutReference; + wgpu_exports_table.wgpu_pipeline_layout_release = wgpuPipelineLayoutRelease; + + // QuerySet + wgpu_exports_table.wgpu_query_set_destroy = wgpuQuerySetDestroy; + wgpu_exports_table.wgpu_query_set_get_count = wgpuQuerySetGetCount; + wgpu_exports_table.wgpu_query_set_get_type = wgpuQuerySetGetType; + wgpu_exports_table.wgpu_query_set_set_label = wgpuQuerySetSetLabel; + wgpu_exports_table.wgpu_query_set_reference = wgpuQuerySetReference; + wgpu_exports_table.wgpu_query_set_release = wgpuQuerySetRelease; + + // Queue + wgpu_exports_table.wgpu_queue_on_submitted_work_done = wgpuQueueOnSubmittedWorkDone; + wgpu_exports_table.wgpu_queue_set_label = wgpuQueueSetLabel; + wgpu_exports_table.wgpu_queue_submit = wgpuQueueSubmit; + wgpu_exports_table.wgpu_queue_write_buffer = wgpuQueueWriteBuffer; + wgpu_exports_table.wgpu_queue_write_texture = wgpuQueueWriteTexture; + wgpu_exports_table.wgpu_queue_reference = wgpuQueueReference; + wgpu_exports_table.wgpu_queue_release = wgpuQueueRelease; + + // RenderBundle + wgpu_exports_table.wgpu_render_bundle_set_label = wgpuRenderBundleSetLabel; + wgpu_exports_table.wgpu_render_bundle_reference = wgpuRenderBundleReference; + wgpu_exports_table.wgpu_render_bundle_release = wgpuRenderBundleRelease; + + // RenderBundleEncoder + wgpu_exports_table.wgpu_render_bundle_encoder_draw = wgpuRenderBundleEncoderDraw; + wgpu_exports_table.wgpu_render_bundle_encoder_draw_indexed = wgpuRenderBundleEncoderDrawIndexed; + wgpu_exports_table.wgpu_render_bundle_encoder_draw_indexed_indirect = wgpuRenderBundleEncoderDrawIndexedIndirect; + wgpu_exports_table.wgpu_render_bundle_encoder_draw_indirect = wgpuRenderBundleEncoderDrawIndirect; + wgpu_exports_table.wgpu_render_bundle_encoder_finish = wgpuRenderBundleEncoderFinish; + wgpu_exports_table.wgpu_render_bundle_encoder_insert_debug_marker = wgpuRenderBundleEncoderInsertDebugMarker; + wgpu_exports_table.wgpu_render_bundle_encoder_pop_debug_group = wgpuRenderBundleEncoderPopDebugGroup; + wgpu_exports_table.wgpu_render_bundle_encoder_push_debug_group = wgpuRenderBundleEncoderPushDebugGroup; + wgpu_exports_table.wgpu_render_bundle_encoder_set_bind_group = wgpuRenderBundleEncoderSetBindGroup; + wgpu_exports_table.wgpu_render_bundle_encoder_set_index_buffer = wgpuRenderBundleEncoderSetIndexBuffer; + wgpu_exports_table.wgpu_render_bundle_encoder_set_label = wgpuRenderBundleEncoderSetLabel; + wgpu_exports_table.wgpu_render_bundle_encoder_set_pipeline = wgpuRenderBundleEncoderSetPipeline; + wgpu_exports_table.wgpu_render_bundle_encoder_set_vertex_buffer = wgpuRenderBundleEncoderSetVertexBuffer; + wgpu_exports_table.wgpu_render_bundle_encoder_reference = wgpuRenderBundleEncoderReference; + wgpu_exports_table.wgpu_render_bundle_encoder_release = wgpuRenderBundleEncoderRelease; + + // RenderPassEncoder + wgpu_exports_table.wgpu_render_pass_encoder_begin_occlusion_query = wgpuRenderPassEncoderBeginOcclusionQuery; + wgpu_exports_table.wgpu_render_pass_encoder_draw = wgpuRenderPassEncoderDraw; + wgpu_exports_table.wgpu_render_pass_encoder_draw_indexed = wgpuRenderPassEncoderDrawIndexed; + wgpu_exports_table.wgpu_render_pass_encoder_draw_indexed_indirect = wgpuRenderPassEncoderDrawIndexedIndirect; + wgpu_exports_table.wgpu_render_pass_encoder_draw_indirect = wgpuRenderPassEncoderDrawIndirect; + wgpu_exports_table.wgpu_render_pass_encoder_end = wgpuRenderPassEncoderEnd; + wgpu_exports_table.wgpu_render_pass_encoder_end_occlusion_query = wgpuRenderPassEncoderEndOcclusionQuery; + wgpu_exports_table.wgpu_render_pass_encoder_execute_bundles = wgpuRenderPassEncoderExecuteBundles; + wgpu_exports_table.wgpu_render_pass_encoder_insert_debug_marker = wgpuRenderPassEncoderInsertDebugMarker; + wgpu_exports_table.wgpu_render_pass_encoder_pop_debug_group = wgpuRenderPassEncoderPopDebugGroup; + wgpu_exports_table.wgpu_render_pass_encoder_push_debug_group = wgpuRenderPassEncoderPushDebugGroup; + wgpu_exports_table.wgpu_render_pass_encoder_set_bind_group = wgpuRenderPassEncoderSetBindGroup; + wgpu_exports_table.wgpu_render_pass_encoder_set_blend_constant = wgpuRenderPassEncoderSetBlendConstant; + wgpu_exports_table.wgpu_render_pass_encoder_set_index_buffer = wgpuRenderPassEncoderSetIndexBuffer; + wgpu_exports_table.wgpu_render_pass_encoder_set_label = wgpuRenderPassEncoderSetLabel; + wgpu_exports_table.wgpu_render_pass_encoder_set_pipeline = wgpuRenderPassEncoderSetPipeline; + wgpu_exports_table.wgpu_render_pass_encoder_set_scissor_rect = wgpuRenderPassEncoderSetScissorRect; + wgpu_exports_table.wgpu_render_pass_encoder_set_stencil_reference = wgpuRenderPassEncoderSetStencilReference; + wgpu_exports_table.wgpu_render_pass_encoder_set_vertex_buffer = wgpuRenderPassEncoderSetVertexBuffer; + wgpu_exports_table.wgpu_render_pass_encoder_set_viewport = wgpuRenderPassEncoderSetViewport; + wgpu_exports_table.wgpu_render_pass_encoder_reference = wgpuRenderPassEncoderReference; + wgpu_exports_table.wgpu_render_pass_encoder_release = wgpuRenderPassEncoderRelease; + + // RenderPipeline + wgpu_exports_table.wgpu_render_pipeline_get_bind_group_layout = wgpuRenderPipelineGetBindGroupLayout; + wgpu_exports_table.wgpu_render_pipeline_set_label = wgpuRenderPipelineSetLabel; + wgpu_exports_table.wgpu_render_pipeline_reference = wgpuRenderPipelineReference; + wgpu_exports_table.wgpu_render_pipeline_release = wgpuRenderPipelineRelease; + + // Sampler + wgpu_exports_table.wgpu_sampler_set_label = wgpuSamplerSetLabel; + wgpu_exports_table.wgpu_sampler_reference = wgpuSamplerReference; + wgpu_exports_table.wgpu_sampler_release = wgpuSamplerRelease; + + // ShaderModule + wgpu_exports_table.wgpu_shader_module_get_compilation_info = wgpuShaderModuleGetCompilationInfo; + wgpu_exports_table.wgpu_shader_module_set_label = wgpuShaderModuleSetLabel; + wgpu_exports_table.wgpu_shader_module_reference = wgpuShaderModuleReference; + wgpu_exports_table.wgpu_shader_module_release = wgpuShaderModuleRelease; + + // Surface + wgpu_exports_table.wgpu_surface_configure = wgpuSurfaceConfigure; + wgpu_exports_table.wgpu_surface_get_capabilities = wgpuSurfaceGetCapabilities; + wgpu_exports_table.wgpu_surface_get_current_texture = wgpuSurfaceGetCurrentTexture; + wgpu_exports_table.wgpu_surface_get_preferred_format = wgpuSurfaceGetPreferredFormat; + wgpu_exports_table.wgpu_surface_present = wgpuSurfacePresent; + wgpu_exports_table.wgpu_surface_unconfigure = wgpuSurfaceUnconfigure; + wgpu_exports_table.wgpu_surface_reference = wgpuSurfaceReference; + wgpu_exports_table.wgpu_surface_release = wgpuSurfaceRelease; + + // SurfaceCapabilities + wgpu_exports_table.wgpu_surface_capabilities_free_members = wgpuSurfaceCapabilitiesFreeMembers; + + // Texture + wgpu_exports_table.wgpu_texture_create_view = wgpuTextureCreateView; + wgpu_exports_table.wgpu_texture_destroy = wgpuTextureDestroy; + wgpu_exports_table.wgpu_texture_get_depth_or_array_layers = wgpuTextureGetDepthOrArrayLayers; + wgpu_exports_table.wgpu_texture_get_dimension = wgpuTextureGetDimension; + wgpu_exports_table.wgpu_texture_get_format = wgpuTextureGetFormat; + wgpu_exports_table.wgpu_texture_get_height = wgpuTextureGetHeight; + wgpu_exports_table.wgpu_texture_get_mip_level_count = wgpuTextureGetMipLevelCount; + wgpu_exports_table.wgpu_texture_get_sample_count = wgpuTextureGetSampleCount; + wgpu_exports_table.wgpu_texture_get_usage = wgpuTextureGetUsage; + wgpu_exports_table.wgpu_texture_get_width = wgpuTextureGetWidth; + wgpu_exports_table.wgpu_texture_set_label = wgpuTextureSetLabel; + wgpu_exports_table.wgpu_texture_reference = wgpuTextureReference; + wgpu_exports_table.wgpu_texture_release = wgpuTextureRelease; + + // TextureView + wgpu_exports_table.wgpu_texture_view_set_label = wgpuTextureViewSetLabel; + wgpu_exports_table.wgpu_texture_view_reference = wgpuTextureViewReference; + wgpu_exports_table.wgpu_texture_view_release = wgpuTextureViewRelease; + + // Native wgpu extensions (from wgpu.h) + wgpu_exports_table.wgpu_generate_report = wgpuGenerateReport; + wgpu_exports_table.wgpu_instance_enumerate_adapters = wgpuInstanceEnumerateAdapters; + wgpu_exports_table.wgpu_queue_submit_for_index = wgpuQueueSubmitForIndex; + wgpu_exports_table.wgpu_device_poll = wgpuDevicePoll; + wgpu_exports_table.wgpu_set_log_callback = wgpuSetLogCallback; + wgpu_exports_table.wgpu_set_log_level = wgpuSetLogLevel; + wgpu_exports_table.wgpu_get_version = wgpuGetVersion; + wgpu_exports_table.wgpu_render_pass_encoder_set_push_constants = wgpuRenderPassEncoderSetPushConstants; + wgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indirect = wgpuRenderPassEncoderMultiDrawIndirect; + wgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indexed_indirect = wgpuRenderPassEncoderMultiDrawIndexedIndirect; + wgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indirect_count = wgpuRenderPassEncoderMultiDrawIndirectCount; + wgpu_exports_table.wgpu_render_pass_encoder_multi_draw_indexed_indirect_count = wgpuRenderPassEncoderMultiDrawIndexedIndirectCount; + wgpu_exports_table.wgpu_compute_pass_encoder_begin_pipeline_statistics_query = wgpuComputePassEncoderBeginPipelineStatisticsQuery; + wgpu_exports_table.wgpu_compute_pass_encoder_end_pipeline_statistics_query = wgpuComputePassEncoderEndPipelineStatisticsQuery; + wgpu_exports_table.wgpu_render_pass_encoder_begin_pipeline_statistics_query = wgpuRenderPassEncoderBeginPipelineStatisticsQuery; + wgpu_exports_table.wgpu_render_pass_encoder_end_pipeline_statistics_query = wgpuRenderPassEncoderEndPipelineStatisticsQuery; + + return &wgpu_exports_table; + } +} \ No newline at end of file diff --git a/Runtime/Bindings/FFI/webgpu/webgpu_ffi.hpp b/Runtime/Bindings/FFI/wgpu/wgpu_ffi.hpp similarity index 57% rename from Runtime/Bindings/FFI/webgpu/webgpu_ffi.hpp rename to Runtime/Bindings/FFI/wgpu/wgpu_ffi.hpp index 7168df2f1..fbb8f8e6c 100644 --- a/Runtime/Bindings/FFI/webgpu/webgpu_ffi.hpp +++ b/Runtime/Bindings/FFI/wgpu/wgpu_ffi.hpp @@ -3,8 +3,8 @@ #include #include -#include "webgpu_exports.h" +#include "wgpu_exports.h" -namespace webgpu_ffi { +namespace wgpu_ffi { void* getExportsTable(); } \ No newline at end of file diff --git a/Runtime/evo.lua b/Runtime/evo.lua index ea45be16f..7ca250aca 100644 --- a/Runtime/evo.lua +++ b/Runtime/evo.lua @@ -32,7 +32,7 @@ local transform = require("transform") local uv = require("uv") local uws = require("uws") local vfs = require("vfs") -local webgpu = require("webgpu") +local wgpu = require("wgpu") local webview = require("webview") local zlib = require("zlib") @@ -229,7 +229,7 @@ function evo.getVersionText() stbi = stbi.version(), stduuid = stduuid.version(), uws = uws.version(), - wgpu = webgpu.version(), + wgpu = wgpu.version(), webview = webview.version(), zlib = semanticZlibVersionString, -- Since the ordering of pairs isn't well-defined, enforce alphabetic order for the CLI output diff --git a/Runtime/main.cpp b/Runtime/main.cpp index 0bdfcd669..d7b651e44 100644 --- a/Runtime/main.cpp +++ b/Runtime/main.cpp @@ -21,7 +21,7 @@ extern "C" { #include "stbi_ffi.hpp" #include "stduuid_ffi.hpp" #include "uws_ffi.hpp" -#include "webgpu_ffi.hpp" +#include "wgpu_ffi.hpp" #include "webview_ffi.hpp" #include "LuaVirtualMachine.hpp" @@ -56,7 +56,7 @@ int main(int argc, char* argv[]) { luaVM->BindStaticLibraryExports("runtime", runtime_ffi::getExportsTable()); luaVM->BindStaticLibraryExports("stbi", stbi_ffi::getExportsTable()); luaVM->BindStaticLibraryExports("stduuid", stduuid_ffi::getExportsTable()); - luaVM->BindStaticLibraryExports("webgpu", webgpu_ffi::getExportsTable()); + luaVM->BindStaticLibraryExports("wgpu", wgpu_ffi::getExportsTable()); // Some namespaces cannot be created from Lua because they store info only available in C++ land (like #defines) luaVM->CreateGlobalNamespace("C_Runtime"); diff --git a/Tests/BDD/webgpu-library.spec.lua b/Tests/BDD/wgpu-library.spec.lua similarity index 99% rename from Tests/BDD/webgpu-library.spec.lua rename to Tests/BDD/wgpu-library.spec.lua index 8da1545de..0cebc15fa 100644 --- a/Tests/BDD/webgpu-library.spec.lua +++ b/Tests/BDD/wgpu-library.spec.lua @@ -9,7 +9,7 @@ local function assertStruct(cdata) assertEquals(type(cdata), "cdata") end -describe("webgpu", function() +describe("wgpu", function() describe("bindings", function() it("should export native wgpu extension enums", function() -- WGPUNativeSType diff --git a/Tests/Integration/glfw-webgpu-surface.lua b/Tests/Integration/glfw-webgpu-surface.lua index f788c522f..499d64a53 100644 --- a/Tests/Integration/glfw-webgpu-surface.lua +++ b/Tests/Integration/glfw-webgpu-surface.lua @@ -1,6 +1,6 @@ local ffi = require("ffi") local glfw = require("glfw") -local webgpu = require("webgpu") +local wgpu = require("wgpu") local isMacOS = (ffi.os == "OSX") if isMacOS then @@ -9,7 +9,7 @@ if isMacOS then end local instanceDescriptor = ffi.new("WGPUInstanceDescriptor") -local instance = webgpu.bindings.wgpu_create_instance(instanceDescriptor) +local instance = wgpu.bindings.wgpu_create_instance(instanceDescriptor) if not instance then error("Could not initialize WebGPU!") end @@ -38,13 +38,13 @@ local function onAdapterRequested(status, adapter, message, pUserData) assert(status == ffi.C.WGPURequestAdapterStatus_Success, "Failed to request adapter") requestedAdapter = adapter end -webgpu.bindings.wgpu_instance_request_adapter(instance, adapterOpts, onAdapterRequested, nil) +wgpu.bindings.wgpu_instance_request_adapter(instance, adapterOpts, onAdapterRequested, nil) print("Got adapter: ", requestedAdapter) local function inspectAdapter(adapter) - local featureCount = webgpu.bindings.wgpu_adapter_enumerate_features(adapter, nil) + local featureCount = wgpu.bindings.wgpu_adapter_enumerate_features(adapter, nil) local features = ffi.new("WGPUFeatureName[?]", featureCount) - webgpu.bindings.wgpu_adapter_enumerate_features(adapter, features) + wgpu.bindings.wgpu_adapter_enumerate_features(adapter, features) print("Adapter features:") for index = 0, tonumber(featureCount) - 1 do @@ -53,7 +53,7 @@ local function inspectAdapter(adapter) end local limits = ffi.new("WGPUSupportedLimits") - local success = webgpu.bindings.wgpu_adapter_get_limits(adapter, limits) + local success = wgpu.bindings.wgpu_adapter_get_limits(adapter, limits) assert(success, "Failed to get adapter limits") print("Adapter limits:") @@ -85,7 +85,7 @@ local function inspectAdapter(adapter) print("\tmaxComputeWorkgroupsPerDimension: ", limits.limits.maxComputeWorkgroupsPerDimension) local properties = ffi.new("WGPUAdapterProperties") - webgpu.bindings.wgpu_adapter_get_properties(adapter, properties) + wgpu.bindings.wgpu_adapter_get_properties(adapter, properties) print("Adapter properties:") print("\tvendorID: ", properties.vendorID) diff --git a/Tests/Integration/rml-glfw-wgpu-setup.lua b/Tests/Integration/rml-glfw-wgpu-setup.lua index bd3825556..71e87455a 100644 --- a/Tests/Integration/rml-glfw-wgpu-setup.lua +++ b/Tests/Integration/rml-glfw-wgpu-setup.lua @@ -2,7 +2,7 @@ local ffi = require("ffi") local glfw = require("glfw") local interop = require("interop") local rml = require("rml") -local webgpu = require("webgpu") +local wgpu = require("wgpu") local isMacOS = (ffi.os == "OSX") if isMacOS then @@ -27,7 +27,7 @@ end -- WebGPU setup local function createDevice(window) local instanceDescriptor = ffi.new("WGPUInstanceDescriptor") - local instance = webgpu.bindings.wgpu_create_instance(instanceDescriptor) + local instance = wgpu.bindings.wgpu_create_instance(instanceDescriptor) if not instance then error("Could not initialize WebGPU!") end @@ -43,7 +43,7 @@ local function createDevice(window) assert(status == ffi.C.WGPURequestAdapterStatus_Success, "Failed to request adapter") requestedAdapter = adapter end - webgpu.bindings.wgpu_instance_request_adapter(instance, adapterOptions, onAdapterRequested, nil) + wgpu.bindings.wgpu_instance_request_adapter(instance, adapterOptions, onAdapterRequested, nil) local requestedDevice local function onDeviceRequested(status, device, message, userdata) @@ -61,7 +61,7 @@ local function createDevice(window) end local deviceDescriptor = ffi.new("WGPUDeviceDescriptor") - webgpu.bindings.wgpu_adapter_request_device(requestedAdapter, deviceDescriptor, onDeviceRequested, nil) + wgpu.bindings.wgpu_adapter_request_device(requestedAdapter, deviceDescriptor, onDeviceRequested, nil) assert(requestedDevice, "onDeviceRequested did not trigger, but it should have") return requestedDevice diff --git a/Tests/unit-test.lua b/Tests/unit-test.lua index 925398aac..db9e4dae9 100644 --- a/Tests/unit-test.lua +++ b/Tests/unit-test.lua @@ -31,7 +31,7 @@ local specFiles = { "Tests/BDD/uv-library.spec.lua", "Tests/BDD/v8-library.spec.lua", "Tests/BDD/vfs-library.spec.lua", - "Tests/BDD/webgpu-library.spec.lua", + "Tests/BDD/wgpu-library.spec.lua", "Tests/BDD/webview-library.spec.lua", "Tests/BDD/zlib-library.spec.lua", "Tests/BDD/commandline-namespace.spec.lua", diff --git a/deps/unixbuild-all.sh b/deps/unixbuild-all.sh index df11ec649..e00613369 100755 --- a/deps/unixbuild-all.sh +++ b/deps/unixbuild-all.sh @@ -3,7 +3,7 @@ set -e deps/discover-submodule-versions.sh deps/luajit-unixbuild.sh -deps/webgpu-unixbuild.sh +deps/wgpu-unixbuild.sh deps/openssl-unixbuild.sh deps/luaopenssl-unixbuild.sh deps/rapidjson-unixbuild.sh diff --git a/deps/webgpu-unixbuild.sh b/deps/wgpu-unixbuild.sh similarity index 100% rename from deps/webgpu-unixbuild.sh rename to deps/wgpu-unixbuild.sh diff --git a/deps/webgpu-windowsbuild.sh b/deps/wgpu-windowsbuild.sh similarity index 100% rename from deps/webgpu-windowsbuild.sh rename to deps/wgpu-windowsbuild.sh diff --git a/deps/windowsbuild-all.sh b/deps/windowsbuild-all.sh index 859ff6716..d952cf568 100755 --- a/deps/windowsbuild-all.sh +++ b/deps/windowsbuild-all.sh @@ -4,7 +4,7 @@ deps/discover-submodule-versions.sh deps/fetch-mswebview2.sh deps/luajit-windowsbuild.sh -deps/webgpu-windowsbuild.sh +deps/wgpu-windowsbuild.sh deps/openssl-windowsbuild.sh deps/luaopenssl-windowsbuild.sh deps/rapidjson-windowsbuild.sh