125 void Dispatch( uint32_t aGroupsX, uint32_t aGroupsY = 1 );
Plain owning command data, recordable on any thread without device access.
void Dispatch(uint32_t aGroupsX, uint32_t aGroupsY=1)
const std::vector< COMMAND > & Commands() const
void BindGroup(uint32_t aIndex, RHI_BindGroupHandle aGroup)
void Readback(RHI_BufferHandle aBuffer, size_t aOffset, size_t aBytes, void *aDestination)
std::vector< COMMAND > m_commands
void Upload(RHI_BufferHandle aBuffer, const void *aData, size_t aBytes, size_t aOffset=0)
Copy upload bytes immediately.
void Bind(RHI_ComputePipelineHandle aPipeline)
void PushConstants(const void *aData, size_t aBytes)
constexpr uint32_t RHI_SPEC_ID_USER_FIRST
bool RhiValidateComputeJob(const RHI_COMPUTE_JOB &aJob, const RHI_COMPUTE_DEVICE_LIMITS &aLimits, const RHI_COMPUTE_JOB_LOOKUP &aLookup)
Check a whole job against live resources before any of it executes, so a bad job has no partial effec...
bool RhiValidateComputePipelineDesc(const RHI_COMPUTE_PIPELINE_DESC &aDesc)
Validate the portable contract without accessing a GPU or inspecting shader bytecode.
constexpr uint32_t RHI_SPEC_ID_WORKGROUP_Y
constexpr uint32_t RHI_SPEC_ID_WORKGROUP_X
Specialization IDs reserved for the workgroup dimensions; Z is always one.
bool RhiValidateComputeBindGroupLayout(const RHI_BIND_GROUP_LAYOUT_DESC &aLayout)
Validate a compute bind group layout.
RHI_HANDLE< RHI_TAG_BUFFER > RHI_BufferHandle
RHI_HANDLE< RHI_TAG_BIND_GROUP > RHI_BindGroupHandle
RHI_HANDLE< RHI_TAG_COMPUTE_PIPELINE > RHI_ComputePipelineHandle
uint64_t minStorageBufferOffsetAlignment
uint64_t maxSharedMemoryBytes
uint32_t maxWorkgroupInvocations
uint64_t maxStorageBufferRange
std::array< uint32_t, 3 > maxWorkgroupSize
std::array< uint32_t, 3 > maxDispatchGroups
Backend command representation; payload bytes are owned by the job.
RHI_ComputePipelineHandle pipeline
std::vector< uint8_t > data
RHI_BindGroupHandle group
Backend lookups for RhiValidateComputeJob.
std::function< const RHI_BIND_GROUP_LAYOUT_DESC *(RHI_BindGroupHandle)> groupLayout
std::function< bool(RHI_BufferHandle, size_t aOffset, size_t aBytes)> storageRange
std::function< const RHI_COMPUTE_PIPELINE_DESC *(RHI_ComputePipelineHandle)> pipeline
std::vector< RHI_SPECIALIZATION_CONSTANT > constants
uint32_t pushConstantBytes
std::vector< RHI_BIND_GROUP_LAYOUT_DESC > bindGroupLayouts
uint32_t maxThreadsPerWorkgroup
uint32_t preferredWorkgroupMultiple
One shader stage as GenerateShaderHeader.cmake embeds it.
A 32-bit specialization value represented as raw bits.