webgpu support
This commit is contained in:
parent
5352ef69a2
commit
dedf6b0467
22 changed files with 1656 additions and 324 deletions
75
interfaces/Crafter.Graphics-WebGPU.cppm
Normal file
75
interfaces/Crafter.Graphics-WebGPU.cppm
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
Crafter®.Graphics
|
||||
Copyright (C) 2026 Catcrafts®
|
||||
catcrafts.net
|
||||
*/
|
||||
|
||||
// JS bridge declarations for the DOM-mode WebGPU backend. Each function
|
||||
// corresponds to one entry in `additional/dom-webgpu.js`. Handles are
|
||||
// opaque uint32 cookies into the JS-side handle tables.
|
||||
|
||||
export module Crafter.Graphics:WebGPU;
|
||||
#ifdef CRAFTER_GRAPHICS_WINDOW_DOM
|
||||
import std;
|
||||
|
||||
export namespace Crafter {
|
||||
using WebGPUBufferRef = std::uint32_t;
|
||||
using WebGPUTextureRef = std::uint32_t;
|
||||
using WebGPUSamplerRef = std::uint32_t;
|
||||
using WebGPUCommandEncoderRef = std::uint32_t; // unused as a real handle; just a marker type for portability
|
||||
}
|
||||
|
||||
namespace Crafter::WebGPU {
|
||||
__attribute__((import_module("env"), import_name("wgpuGetCanvasWidth")))
|
||||
extern "C" std::int32_t wgpuGetCanvasWidth();
|
||||
__attribute__((import_module("env"), import_name("wgpuGetCanvasHeight")))
|
||||
extern "C" std::int32_t wgpuGetCanvasHeight();
|
||||
__attribute__((import_module("env"), import_name("wgpuSurfaceWidth")))
|
||||
extern "C" std::int32_t wgpuSurfaceWidth();
|
||||
__attribute__((import_module("env"), import_name("wgpuSurfaceHeight")))
|
||||
extern "C" std::int32_t wgpuSurfaceHeight();
|
||||
__attribute__((import_module("env"), import_name("wgpuInit")))
|
||||
extern "C" void wgpuInit();
|
||||
|
||||
__attribute__((import_module("env"), import_name("wgpuCreateBuffer")))
|
||||
extern "C" std::uint32_t wgpuCreateBuffer(std::int32_t byteSize);
|
||||
__attribute__((import_module("env"), import_name("wgpuWriteBuffer")))
|
||||
extern "C" void wgpuWriteBuffer(std::uint32_t handle, const void* srcPtr, std::int32_t byteSize);
|
||||
__attribute__((import_module("env"), import_name("wgpuDestroyBuffer")))
|
||||
extern "C" void wgpuDestroyBuffer(std::uint32_t handle);
|
||||
|
||||
__attribute__((import_module("env"), import_name("wgpuCreateAtlasTexture")))
|
||||
extern "C" std::uint32_t wgpuCreateAtlasTexture(std::int32_t w, std::int32_t h);
|
||||
__attribute__((import_module("env"), import_name("wgpuWriteAtlasRegion")))
|
||||
extern "C" void wgpuWriteAtlasRegion(std::uint32_t handle, const void* srcPtr,
|
||||
std::int32_t srcW, std::int32_t srcH,
|
||||
std::int32_t srcBytesPerRow,
|
||||
std::int32_t dstX, std::int32_t dstY,
|
||||
std::int32_t copyW, std::int32_t copyH);
|
||||
__attribute__((import_module("env"), import_name("wgpuDestroyTexture")))
|
||||
extern "C" void wgpuDestroyTexture(std::uint32_t handle);
|
||||
|
||||
__attribute__((import_module("env"), import_name("wgpuCreateLinearClampSampler")))
|
||||
extern "C" std::uint32_t wgpuCreateLinearClampSampler();
|
||||
|
||||
__attribute__((import_module("env"), import_name("wgpuFrameBegin")))
|
||||
extern "C" void wgpuFrameBegin();
|
||||
__attribute__((import_module("env"), import_name("wgpuFrameEnd")))
|
||||
extern "C" void wgpuFrameEnd();
|
||||
|
||||
__attribute__((import_module("env"), import_name("wgpuDispatchQuads")))
|
||||
extern "C" void wgpuDispatchQuads(std::uint32_t itemsHandle, const void* headerPtr,
|
||||
std::int32_t gx, std::int32_t gy);
|
||||
__attribute__((import_module("env"), import_name("wgpuDispatchCircles")))
|
||||
extern "C" void wgpuDispatchCircles(std::uint32_t itemsHandle, const void* headerPtr,
|
||||
std::int32_t gx, std::int32_t gy);
|
||||
__attribute__((import_module("env"), import_name("wgpuDispatchImages")))
|
||||
extern "C" void wgpuDispatchImages(std::uint32_t itemsHandle, const void* headerPtr,
|
||||
std::int32_t gx, std::int32_t gy,
|
||||
std::uint32_t texHandle, std::uint32_t sampHandle);
|
||||
__attribute__((import_module("env"), import_name("wgpuDispatchText")))
|
||||
extern "C" void wgpuDispatchText(std::uint32_t itemsHandle, const void* headerPtr,
|
||||
std::int32_t gx, std::int32_t gy,
|
||||
std::uint32_t atlasHandle, std::uint32_t sampHandle);
|
||||
}
|
||||
#endif // CRAFTER_GRAPHICS_WINDOW_DOM
|
||||
Loading…
Add table
Add a link
Reference in a new issue