| // Copyright 2021 The IREE Authors |
| // |
| // Licensed under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| #ifndef IREE_HAL_DRIVERS_WEBGPU_PLATFORM_WEBGPU_H_ |
| #define IREE_HAL_DRIVERS_WEBGPU_PLATFORM_WEBGPU_H_ |
| |
| #include "iree/base/api.h" |
| #include "iree/hal/api.h" |
| |
| #define WGPU_SKIP_PROCS 1 |
| #if defined(IREE_PLATFORM_EMSCRIPTEN) |
| #include <emscripten/html5_webgpu.h> |
| #else |
| #include "third_party/webgpu-headers/webgpu.h" // IWYU pragma: export |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif // __cplusplus |
| |
| //===----------------------------------------------------------------------===// |
| // WebGPU API utilities |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef NDEBUG |
| #define WGPU_DEBUG_LABEL(str) str |
| #else |
| #define WGPU_DEBUG_LABEL(str) NULL |
| #endif // NDEBUG |
| |
| //===----------------------------------------------------------------------===// |
| // Implementation compatibility layer |
| //===----------------------------------------------------------------------===// |
| // The webgpu-native headers don't yet line up across implementations or expose |
| // everything we need. These methods attempt to paper over that such that we |
| // can avoid including implementation-specific headers and #ifdefing everywhere. |
| |
| // Methods for dropping references to objects. |
| // The base header does have some *Destroy methods but they are not implemented |
| // anywhere yet and the naming is incorrect as they are just dropping the user |
| // reference to the object (the implementation retains them as long as needed). |
| // Discussion here: https://github.com/webgpu-native/webgpu-headers/pull/15 |
| |
| void iree_wgpuBindGroupDrop(WGPUBindGroup bindGroup); |
| void iree_wgpuBindGroupLayoutDrop(WGPUBindGroupLayout bindGroupLayout); |
| void iree_wgpuBufferDrop(WGPUBuffer buffer); |
| void iree_wgpuCommandBufferDrop(WGPUCommandBuffer commandBuffer); |
| void iree_wgpuCommandEncoderDrop(WGPUCommandEncoder commandEncoder); |
| void iree_wgpuComputePipelineDrop(WGPUComputePipeline computePipeline); |
| void iree_wgpuPipelineLayoutDrop(WGPUPipelineLayout pipelineLayout); |
| void iree_wgpuQuerySetDrop(WGPUQuerySet querySet); |
| void iree_wgpuShaderModuleDrop(WGPUShaderModule shaderModule); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif // __cplusplus |
| |
| #endif // IREE_HAL_DRIVERS_WEBGPU_PLATFORM_WEBGPU_H_ |