fixing descriptor sets, adding buffer compute write test

This commit is contained in:
2025-02-21 20:24:00 +01:00
parent c8f6245c2c
commit 2de2e1f381
24 changed files with 510 additions and 105 deletions

View File

@@ -35,16 +35,17 @@ int main(void)
#include "shader.spv.h"
};
PulseComputePipelineCreateInfo info = {};
PulseComputePipelineCreateInfo info = { 0 };
info.code_size = sizeof(shader_bytecode);
info.code = shader_bytecode;
info.entrypoint = "main";
info.format = PULSE_SHADER_FORMAT_SPIRV_BIT;
info.num_readwrite_storage_buffers = 1;
PulseComputePipeline pipeline = PulseCreateComputePipeline(device, &info);
CHECK_PULSE_HANDLE_RETVAL(pipeline, 1);
PulseBufferCreateInfo buffer_create_info = {};
PulseBufferCreateInfo buffer_create_info = { 0 };
buffer_create_info.size = 1024;
buffer_create_info.usage = PULSE_BUFFER_USAGE_STORAGE_READ | PULSE_BUFFER_USAGE_STORAGE_WRITE | PULSE_BUFFER_USAGE_TRANSFER_DOWNLOAD;
@@ -68,6 +69,13 @@ int main(void)
if(!PulseWaitForFences(device, &fence, 1, true))
fprintf(stderr, "Could not wait for fences, %s\n", PulseVerbaliseErrorType(PulseGetLastErrorType()));
void* ptr;
PulseMapBuffer(buffer, &ptr);
for(uint32_t i = 0; i < 1024; i++)
printf("%d, ", ((int32_t*)ptr)[i]);
puts("");
PulseUnmapBuffer(buffer);
PulseReleaseCommandList(device, cmd);
PulseDestroyFence(device, fence);
PulseDestroyComputePipeline(device, pipeline);

View File

@@ -14,12 +14,12 @@ struct SSBO
external
{
[set(0), binding(0)] ssbo: storage[SSBO],
[set(1), binding(0)] ssbo: storage[SSBO],
}
[entry(compute)]
[workgroup(32, 32, 1)]
fn main(input: Input)
{
ssbo.data[input.indices.x * input.indices.y] = 1;
ssbo.data[input.indices.x * input.indices.y] = i32(input.indices.x * input.indices.y);
}