|
| | GeodeWgpuAdapterDevice (GeodeDevice &geodeDevice) |
| | Constructs the adapter over geodeDevice.
|
|
| ~GeodeWgpuAdapterDevice () override |
| | Destructor; waits for in-flight submissions (so deferred destructions drain), then releases every wgpu object the adapter still owns.
|
| uint64_t | completedSerial () const override |
| | Serial of the most recent submission whose queue work-done callback has fired (0 if none). wgpu delivers the callbacks during waitForSerial's polling (and opportunistically on submit), so call waitForSerial to guarantee progress.
|
| bool | waitForSerial (uint64_t serial, double timeoutSeconds) |
| | Blocks until completedSerial reaches serial or timeoutSeconds elapses, driving wgpu::Device::poll so queued work-done callbacks are delivered (on Emscripten the poll shim yields through Asyncify, mirroring GeodeDevice's wait machinery).
|
| gpu::Status | destroyTextureBacking (gpu::Texture &&texture) |
| | TEMPORARY escape hatch (deleted with the readback and presentation migration): registers an externally owned wgpu texture - e.g.
|
| gpu::Status | destroyBufferBacking (gpu::Buffer &&buffer) |
| | Destroys the backend object behind buffer explicitly, then releases its slot.
|
| bool | mappingUsedTimedWaitAny (const gpu::BufferMapping &mapping) const |
| | Whether any wait slice of mapping waited on the map's completion event rather than polling for it.
|
| void | setSimulateEventWaitForTest (bool simulate) |
| | Test seam: makes a wait slice behave as the browser's timed wait does when it expires without the map completing - it reports that it handled the slice, having learned nothing.
|
|
gpu::Result< gpu::Texture > | importExternalTexture (wgpu::Texture texture, const gpu::Extent2d &size, gpu::TextureFormat format, gpu::TextureUsage usage) |
| void | setHostCommandEncoder (wgpu::CommandEncoder encoder) |
| | Installs encoder as the host command encoder: while one is installed, a submitted command stream is replayed into it instead of into an encoder this adapter owns, and this adapter performs no queue submit of its own.
|
|
void | clearHostCommandEncoder () |
| | Uninstalls the host command encoder, returning this adapter to owning and submitting the encoders it records into. Serials already replayed into a host encoder stay incomplete until notifyHostSubmitted reports their submit.
|
| bool | hasHostCommandEncoder () const |
| | True while a host command encoder is installed, i.e. while submissions are replayed into it instead of reaching the queue.
|
| void | notifyHostSubmitted () |
| | Reports that the host submitted a command buffer carrying every stream replayed since the previous report, so their completion can now be observed.
|
| gpu::Result< uint64_t > | submitStandalone (gpu::CommandBuffer &&commands) |
| | Submits commands straight to the queue, even while a host command encoder is installed.
|
| wgpu::Texture | wgpuTextureOf (const gpu::Texture &texture) const |
| | TEMPORARY escape hatch (deleted with the readback and presentation migration): returns the wgpu texture behind texture, or a null handle if the handle does not name a live texture of this adapter.
|
| wgpu::TextureView | wgpuTextureViewOf (const gpu::TextureView &textureView) const |
| | TEMPORARY escape hatch (deleted with the readback and presentation migration): returns the wgpu texture view behind textureView, or a null handle if unknown.
|
|
virtual | ~Device () |
| | Destructor; expires the device-alive token (so handles that outlive the device release nothing) and frees all remaining resources. Backends that submit asynchronously must wait for in-flight submissions in their own destructor before backend state is torn down.
|
|
| Device (const Device &)=delete |
|
Device & | operator= (const Device &)=delete |
|
| Device (Device &&)=delete |
|
Device & | operator= (Device &&)=delete |
|
uint64_t | deviceId () const |
| | Process-unique identity of this device (starts at 1, never reused). Baked into every handle for cross-device validation.
|
| Result< Buffer > | createBuffer (const BufferDescriptor &descriptor) |
| | Creates a buffer.
|
| Result< Texture > | createTexture (const TextureDescriptor &descriptor) |
| | Creates a 2D texture.
|
| Result< TextureView > | createTextureView (const Texture &texture, const TextureViewDescriptor &descriptor) |
| | Creates a view of texture covering the whole texture.
|
| Result< Sampler > | createSampler (const SamplerDescriptor &descriptor) |
| | Creates a sampler.
|
| Result< BindGroupLayout > | createBindGroupLayout (const BindGroupLayoutDescriptor &descriptor) |
| | Creates a bind group layout.
|
| Result< BindGroup > | createBindGroup (const BindGroupDescriptor &descriptor) |
| | Creates a bind group.
|
| Result< PipelineLayout > | createPipelineLayout (const PipelineLayoutDescriptor &descriptor) |
| | Creates a pipeline layout.
|
| Result< ShaderModule > | createShaderModule (const ShaderModuleDescriptor &descriptor) |
| | Creates a shader module from trusted generated source.
|
| Result< RenderPipeline > | createRenderPipeline (const RenderPipelineDescriptor &descriptor) |
| | Creates a render pipeline.
|
| Result< ComputePipeline > | createComputePipeline (const ComputePipelineDescriptor &descriptor) |
| | Creates a compute pipeline.
|
| Status | destroyBuffer (Buffer &&buffer) |
| | Destroys a buffer (see the destroy contract above).
|
| Status | destroyTexture (Texture &&texture) |
| | Destroys a texture (see the destroy contract above).
|
| Status | destroyTextureView (TextureView &&textureView) |
| | Destroys a texture view (see the destroy contract above).
|
| Status | destroySampler (Sampler &&sampler) |
| | Destroys a sampler (see the destroy contract above).
|
| Status | destroyBindGroupLayout (BindGroupLayout &&bindGroupLayout) |
| | Destroys a bind group layout (see the destroy contract above).
|
| Status | destroyBindGroup (BindGroup &&bindGroup) |
| | Destroys a bind group (see the destroy contract above).
|
| Status | destroyPipelineLayout (PipelineLayout &&pipelineLayout) |
| | Destroys a pipeline layout (see the destroy contract above).
|
| Status | destroyShaderModule (ShaderModule &&shaderModule) |
| | Destroys a shader module (see the destroy contract above).
|
| Status | destroyRenderPipeline (RenderPipeline &&renderPipeline) |
| | Destroys a render pipeline (see the destroy contract above).
|
| Status | destroyComputePipeline (ComputePipeline &&computePipeline) |
| | Destroys a compute pipeline (see the destroy contract above).
|
|
Result< std::unique_ptr< CommandEncoder > > | createCommandEncoder () |
| | Creates a command encoder recording against this device. The encoder must not outlive the device.
|
| Result< Surface > | createSurface (const SurfaceDescriptor &descriptor) |
| | Creates a surface presenting to a platform object.
|
| Result< SurfaceCapabilities > | surfaceCapabilities (const Surface &surface) const |
| | What surface supports, for choosing a configuration.
|
| Status | configureSurface (const Surface &surface, const SurfaceConfiguration &configuration) |
| | Configures how surface presents, replacing any previous configuration.
|
| Result< SurfaceTexture > | acquireCurrentTexture (const Surface &surface) |
| | Acquires the texture for the next frame of surface.
|
| Result< SurfaceStatus > | presentSurface (const Surface &surface) |
| | Presents the texture acquired from surface and invalidates it.
|
| Status | abandonCurrentTexture (const Surface &surface) |
| | Releases the acquired texture of surface without presenting it, for a frame the caller decided not to show.
|
| Status | destroySurface (Surface &&surface) |
| | Destroys a surface (see the destroy contract above).
|
| Result< BufferMapping > | mapBufferAsync (const Buffer &buffer, MapMode mode, uint64_t offsetBytes, uint64_t byteCount) |
| | Begins mapping a range of buffer for host access, and returns the handle that names the mapping.
|
|
Result< MapWaitOutcome > | waitForMapping (const BufferMapping &mapping, const MapWaitParams ¶ms, const std::function< bool()> &shouldCancel, const MapWaitTestHooks &testHooks={}) |
| Result< std::span< const uint8_t > > | mappedBytes (const BufferMapping &mapping) const |
| | Returns the mapped bytes of a completed mapping.
|
| Status | unmapBuffer (BufferMapping &&mapping) |
| | Releases a mapping, invalidating the handle and every copy of it.
|
| Status | writeBuffer (const Buffer &buffer, uint64_t offsetBytes, std::span< const uint8_t > data) |
| | Writes data into buffer at offsetBytes.
|
| Status | writeTexture (const Texture &texture, std::span< const uint8_t > data, const TexelCopyBufferLayout &dataLayout, const Extent2d &writeSize) |
| | Writes texel rows from data into texture starting at texel (0, 0).
|
| Result< uint64_t > | submit (CommandBuffer commandBuffer) |
| | Submits a finished command buffer, consuming it, and returns the assigned submission serial.
|
| void | poll () |
| | Processes deferred destructions: releases the backend object of every destroyed resource whose last referencing submission has completed (completedSerial), and recycles its slot.
|
|
uint64_t | lastSubmittedSerial () const |
| | Serial assigned to the most recent submission (0 if none yet).
|
|
| gpu::Status | onCreateSurface (uint32_t slotIndex, const gpu::SurfaceDescriptor &descriptor) override |
| | Backend hook: create a surface for a platform object.
|
| gpu::Result< gpu::SurfaceCapabilities > | onSurfaceCapabilities (uint32_t slotIndex) const override |
| | Backend hook: what a surface supports.
|
| gpu::Status | onConfigureSurface (uint32_t slotIndex, const gpu::SurfaceConfiguration &configuration) override |
| | Backend hook: apply a configuration.
|
| gpu::Result< gpu::SurfaceStatus > | onAcquireCurrentTexture (uint32_t slotIndex, uint32_t textureSlotIndex) override |
| | Backend hook: acquire the next frame's texture and report the surface's state.
|
| gpu::Result< gpu::SurfaceStatus > | onPresentSurface (uint32_t slotIndex) override |
| | Backend hook: present the acquired texture.
|
| void | onAbandonCurrentTexture (uint32_t slotIndex) override |
| | Backend hook: drop the acquired texture without presenting.
|
| gpu::Status | onMapBufferAsync (uint32_t mappingSlotIndex, uint32_t bufferSlotIndex, gpu::MapMode mode, uint64_t offsetBytes, uint64_t byteCount) override |
| | Backend hook: begin mapping a buffer range.
|
| gpu::MapSliceState | onWaitMappingSlice (uint32_t mappingSlotIndex, double sliceSeconds) override |
| | Backend hook: wait up to sliceSeconds for a pending mapping and report what it found.
|
| gpu::Result< std::span< const uint8_t > > | onMappedBytes (uint32_t mappingSlotIndex) const override |
| | Backend hook: bytes of a completed mapping.
|
| void | onUnmapBuffer (uint32_t mappingSlotIndex) override |
| | Backend hook: release a mapping.
|
| gpu::Status | onCreateBuffer (uint32_t slotIndex, const gpu::BufferDescriptor &descriptor) override |
| | Backend hook: a buffer passed validation and occupies slotIndex.
|
| gpu::Status | onCreateTexture (uint32_t slotIndex, const gpu::TextureDescriptor &descriptor) override |
| | Backend hook: a texture passed validation and occupies slotIndex.
|
| gpu::Status | onCreateTextureView (uint32_t slotIndex, uint32_t textureSlotIndex, const gpu::TextureViewDescriptor &descriptor) override |
| | Backend hook: a texture view passed validation and occupies slotIndex.
|
| gpu::Status | onCreateSampler (uint32_t slotIndex, const gpu::SamplerDescriptor &descriptor) override |
| | Backend hook: a sampler passed validation and occupies slotIndex.
|
| gpu::Status | onCreateBindGroupLayout (uint32_t slotIndex, const gpu::BindGroupLayoutDescriptor &descriptor) override |
| | Backend hook: a bind group layout passed validation and occupies slotIndex.
|
| gpu::Status | onCreateBindGroup (uint32_t slotIndex, const gpu::BindGroupDescriptor &descriptor) override |
| | Backend hook: a bind group passed validation and occupies slotIndex.
|
| gpu::Status | onCreatePipelineLayout (uint32_t slotIndex, const gpu::PipelineLayoutDescriptor &descriptor) override |
| | Backend hook: a pipeline layout passed validation and occupies slotIndex.
|
| gpu::Status | onCreateShaderModule (uint32_t slotIndex, const gpu::ShaderModuleDescriptor &descriptor) override |
| | Backend hook: a shader module passed validation and occupies slotIndex.
|
| gpu::Status | onCreateRenderPipeline (uint32_t slotIndex, const gpu::RenderPipelineDescriptor &descriptor) override |
| | Backend hook: a render pipeline passed validation and occupies slotIndex.
|
| gpu::Status | onCreateComputePipeline (uint32_t slotIndex, const gpu::ComputePipelineDescriptor &descriptor) override |
| | Backend hook: a compute pipeline passed validation and occupies slotIndex.
|
| void | onDestroyResource (std::string_view resourceName, uint32_t slotIndex) override |
| | Backend hook: a validated resource was destroyed.
|
| gpu::Status | onWriteBuffer (uint32_t slotIndex, uint64_t offsetBytes, std::span< const uint8_t > data) override |
| | Backend hook: a validated buffer write.
|
| gpu::Status | onWriteTexture (uint32_t slotIndex, std::span< const uint8_t > data, const gpu::TexelCopyBufferLayout &dataLayout, const gpu::Extent2d &writeSize) override |
| | Backend hook: a validated texture write.
|
| gpu::Status | onSubmit (uint64_t submissionSerial, uint32_t commandBufferSlotIndex, std::span< const gpu::Command > commands) override |
| | Backend hook: a validated command buffer was submitted.
|
|
| Device () |
| | Constructor for backends; assigns the process-unique device identity.
|
| Status | validateBufferHandleForBackend (const Buffer &buffer) const |
| | Validates a buffer handle for backend-provided auxiliary entry points (test readback helpers and similar), running the same null/device-identity/generation checks the template-method public API performs before its hooks.
|
| Status | validateTextureHandleForBackend (const Texture &texture) const |
| | Validates a texture handle for backend-provided auxiliary entry points, running the same null/device-identity/generation checks the template-method public API performs.
|
| Status | validateTextureViewHandleForBackend (const TextureView &textureView) const |
| | Validates a texture view handle for backend-provided auxiliary entry points: the view itself plus a re-resolution of its viewed texture, so a view of a destroyed (or slot-recycled) texture fails closed exactly like it does on the normal Device paths.
|
| Status | validateBufferMappingHandleForBackend (const BufferMapping &mapping) const |
| | Validates a buffer-mapping handle for backend-provided auxiliary entry points, running the same null/device-identity/generation checks the template-method public API performs, so a stale handle cannot read state belonging to the slot's new occupant.
|
Implements donner::gpu::Device on top of the wgpu device a GeodeDevice already owns, so Geode subsystems can migrate onto the Donner GPU runtime one at a time while the process still renders through wgpu underneath.
Every on* hook receives input the base class already validated fail-closed, and translates it to the corresponding webgpu.hpp call. wgpu objects are stored in per-kind slot vectors indexed by the base class's slot indices; bind groups capture their wgpu layout object at creation time (wgpu retains it internally), so encoding never resolves a layout by slot.
Does NOT own the GeodeDevice: the constructing scope must keep it alive for the adapter's whole lifetime (in practice GeodeDevice owns the adapter alongside its shared pipelines).
Thread affinity matches donner::gpu::Device: single-threaded use. Completion callbacks touch only the atomic completed-serial counter.