mirror of
https://github.com/Kbz-8/Pulse.git
synced 2026-01-11 07:23:35 +00:00
removing starting_slot argument
This commit is contained in:
@@ -46,7 +46,7 @@ int main(void)
|
||||
CHECK_PULSE_HANDLE_RETVAL(pipeline, 1);
|
||||
|
||||
PulseBufferCreateInfo buffer_create_info = { 0 };
|
||||
buffer_create_info.size = 1024;
|
||||
buffer_create_info.size = 256 * sizeof(uint32_t);
|
||||
buffer_create_info.usage = PULSE_BUFFER_USAGE_STORAGE_READ | PULSE_BUFFER_USAGE_STORAGE_WRITE | PULSE_BUFFER_USAGE_TRANSFER_DOWNLOAD;
|
||||
|
||||
PulseBuffer buffer = PulseCreateBuffer(device, &buffer_create_info);
|
||||
@@ -59,7 +59,7 @@ int main(void)
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
CHECK_PULSE_HANDLE_RETVAL(pass, 1);
|
||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
||||
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
@@ -71,7 +71,7 @@ int main(void)
|
||||
|
||||
void* ptr;
|
||||
PulseMapBuffer(buffer, &ptr);
|
||||
for(uint32_t i = 0; i < 1024; i++)
|
||||
for(uint32_t i = 0; i < 256; i++)
|
||||
printf("%d, ", ((int32_t*)ptr)[i]);
|
||||
puts("");
|
||||
PulseUnmapBuffer(buffer);
|
||||
@@ -84,6 +84,6 @@ int main(void)
|
||||
|
||||
PulseDestroyDevice(device);
|
||||
PulseUnloadBackend(backend);
|
||||
puts("Successfully loaded Pulse using Vulkan !");
|
||||
puts("Successfully executed Pulse example using Vulkan !");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -280,9 +280,9 @@ PULSE_API PulseComputePipeline PulseCreateComputePipeline(PulseDevice device, co
|
||||
PULSE_API void PulseDestroyComputePipeline(PulseDevice device, PulseComputePipeline pipeline);
|
||||
|
||||
PULSE_API PulseComputePass PulseBeginComputePass(PulseCommandList cmd);
|
||||
PULSE_API void PulseBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, const PulseBuffer* buffers, uint32_t num_buffers);
|
||||
PULSE_API void PulseBindStorageBuffers(PulseComputePass pass, const PulseBuffer* buffers, uint32_t num_buffers);
|
||||
PULSE_API void PulseBindUniformData(PulseComputePass pass, uint32_t slot, const void* data, uint32_t data_size);
|
||||
PULSE_API void PulseBindStorageImages(PulseComputePass pass, uint32_t starting_slot, const PulseImage* images, uint32_t num_images);
|
||||
PULSE_API void PulseBindStorageImages(PulseComputePass pass, const PulseImage* images, uint32_t num_images);
|
||||
PULSE_API void PulseBindComputePipeline(PulseComputePass pass, PulseComputePipeline pipeline);
|
||||
PULSE_API void PulseDispatchComputations(PulseComputePass pass, uint32_t groupcount_x, uint32_t groupcount_y, uint32_t groupcount_z);
|
||||
PULSE_API void PulseDispatchComputationsIndirect(PulseComputePass pass, PulseBuffer buffer, uint32_t offset);
|
||||
|
||||
@@ -34,7 +34,7 @@ void VulkanDestroyComputePass(PulseDevice device, PulseComputePass pass)
|
||||
free(pass);
|
||||
}
|
||||
|
||||
void VulkanBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, const PulseBuffer* buffers, uint32_t num_buffers)
|
||||
void VulkanBindStorageBuffers(PulseComputePass pass, const PulseBuffer* buffers, uint32_t num_buffers)
|
||||
{
|
||||
PulseBufferUsageFlags usage = buffers[0]->usage;
|
||||
bool is_readwrite = (usage & PULSE_BUFFER_USAGE_STORAGE_WRITE) != 0;
|
||||
@@ -58,9 +58,9 @@ void VulkanBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, con
|
||||
return;
|
||||
}
|
||||
|
||||
if(array[starting_slot + i] == buffers[i])
|
||||
if(array[i] == buffers[i])
|
||||
continue;
|
||||
array[starting_slot + i] = buffers[i];
|
||||
array[i] = buffers[i];
|
||||
|
||||
if(is_readwrite)
|
||||
vulkan_pass->should_recreate_write_descriptor_sets = true;
|
||||
@@ -73,7 +73,7 @@ void VulkanBindUniformData(PulseComputePass pass, uint32_t slot, const void* dat
|
||||
{
|
||||
}
|
||||
|
||||
void VulkanBindStorageImages(PulseComputePass pass, uint32_t starting_slot, const PulseImage* images, uint32_t num_images)
|
||||
void VulkanBindStorageImages(PulseComputePass pass, const PulseImage* images, uint32_t num_images)
|
||||
{
|
||||
PulseImageUsageFlags usage = images[0]->usage;
|
||||
bool is_readwrite = (usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0;
|
||||
@@ -97,9 +97,9 @@ void VulkanBindStorageImages(PulseComputePass pass, uint32_t starting_slot, cons
|
||||
return;
|
||||
}
|
||||
|
||||
if(array[starting_slot + i] == images[i])
|
||||
if(array[i] == images[i])
|
||||
continue;
|
||||
array[starting_slot + i] = images[i];
|
||||
array[i] = images[i];
|
||||
|
||||
if((usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0)
|
||||
vulkan_pass->should_recreate_write_descriptor_sets = true;
|
||||
|
||||
@@ -31,9 +31,9 @@ void VulkanDestroyComputePass(PulseDevice device, PulseComputePass pass);
|
||||
|
||||
PulseComputePass VulkanBeginComputePass(PulseCommandList cmd);
|
||||
void VulkanEndComputePass(PulseComputePass pass);
|
||||
void VulkanBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, const PulseBuffer* buffers, uint32_t num_buffers);
|
||||
void VulkanBindStorageBuffers(PulseComputePass pass, const PulseBuffer* buffers, uint32_t num_buffers);
|
||||
void VulkanBindUniformData(PulseComputePass pass, uint32_t slot, const void* data, uint32_t data_size);
|
||||
void VulkanBindStorageImages(PulseComputePass pass, uint32_t starting_slot, const PulseImage* images, uint32_t num_images);
|
||||
void VulkanBindStorageImages(PulseComputePass pass, const PulseImage* images, uint32_t num_images);
|
||||
void VulkanBindComputePipeline(PulseComputePass pass, PulseComputePipeline pipeline);
|
||||
void VulkanDispatchComputations(PulseComputePass pass, uint32_t groupcount_x, uint32_t groupcount_y, uint32_t groupcount_z);
|
||||
|
||||
|
||||
@@ -275,8 +275,6 @@ void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
|
||||
for(uint32_t i = 0; i < pass->current_pipeline->num_readonly_storage_images; i++)
|
||||
{
|
||||
if(pass->readonly_images[i] == PULSE_NULL_HANDLE)
|
||||
continue;
|
||||
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||
|
||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||
@@ -303,8 +301,6 @@ void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
|
||||
for(uint32_t i = 0; i < pass->current_pipeline->num_readonly_storage_buffers; i++)
|
||||
{
|
||||
if(pass->readonly_storage_buffers[i] == PULSE_NULL_HANDLE)
|
||||
continue;
|
||||
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||
|
||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||
@@ -340,8 +336,6 @@ void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
|
||||
for(uint32_t i = 0; i < pass->current_pipeline->num_readwrite_storage_images; i++)
|
||||
{
|
||||
if(pass->readwrite_images[i] == PULSE_NULL_HANDLE)
|
||||
continue;
|
||||
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||
|
||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||
@@ -368,8 +362,6 @@ void VulkanBindDescriptorSets(PulseComputePass pass)
|
||||
|
||||
for(uint32_t i = 0; i < pass->current_pipeline->num_readwrite_storage_buffers; i++)
|
||||
{
|
||||
if(pass->readwrite_storage_buffers[i] == PULSE_NULL_HANDLE)
|
||||
continue;
|
||||
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||
|
||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||
|
||||
@@ -23,13 +23,13 @@ PULSE_API PulseComputePass PulseBeginComputePass(PulseCommandList cmd)
|
||||
return pass;
|
||||
}
|
||||
|
||||
PULSE_API void PulseBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, const PulseBuffer* buffers, uint32_t num_buffers)
|
||||
PULSE_API void PulseBindStorageBuffers(PulseComputePass pass, const PulseBuffer* buffers, uint32_t num_buffers)
|
||||
{
|
||||
PULSE_CHECK_HANDLE(pass);
|
||||
|
||||
PULSE_CHECK_COMMAND_LIST_STATE(pass->cmd);
|
||||
|
||||
pass->cmd->device->PFN_BindStorageBuffers(pass, starting_slot, buffers, num_buffers);
|
||||
pass->cmd->device->PFN_BindStorageBuffers(pass, buffers, num_buffers);
|
||||
}
|
||||
|
||||
PULSE_API void PulseBindUniformData(PulseComputePass pass, uint32_t slot, const void* data, uint32_t data_size)
|
||||
@@ -41,13 +41,13 @@ PULSE_API void PulseBindUniformData(PulseComputePass pass, uint32_t slot, const
|
||||
pass->cmd->device->PFN_BindUniformData(pass, slot, data, data_size);
|
||||
}
|
||||
|
||||
PULSE_API void PulseBindStorageImages(PulseComputePass pass, uint32_t starting_slot, const PulseImage* images, uint32_t num_images)
|
||||
PULSE_API void PulseBindStorageImages(PulseComputePass pass, const PulseImage* images, uint32_t num_images)
|
||||
{
|
||||
PULSE_CHECK_HANDLE(pass);
|
||||
|
||||
PULSE_CHECK_COMMAND_LIST_STATE(pass->cmd);
|
||||
|
||||
pass->cmd->device->PFN_BindStorageImages(pass, starting_slot, images, num_images);
|
||||
pass->cmd->device->PFN_BindStorageImages(pass, images, num_images);
|
||||
}
|
||||
|
||||
PULSE_API void PulseBindComputePipeline(PulseComputePass pass, PulseComputePipeline pipeline)
|
||||
|
||||
@@ -36,9 +36,9 @@ typedef bool (*PulseCopyBufferToImageFN)(PulseCommandList, const PulseBufferRegi
|
||||
typedef bool (*PulseCopyImageToBufferPFN)(PulseCommandList, const PulseImageRegion*, const PulseBufferRegion*);
|
||||
typedef bool (*PulseBlitImagePFN)(PulseCommandList, const PulseImageRegion*, const PulseImageRegion*);
|
||||
typedef PulseComputePass (*PulseBeginComputePassPFN)(PulseCommandList);
|
||||
typedef void (*PulseBindStorageBuffersPFN)(PulseComputePass, uint32_t, const PulseBuffer*, uint32_t);
|
||||
typedef void (*PulseBindStorageBuffersPFN)(PulseComputePass, const PulseBuffer*, uint32_t);
|
||||
typedef void (*PulseBindUniformDataPFN)(PulseComputePass, uint32_t, const void*, uint32_t);
|
||||
typedef void (*PulseBindStorageImagesPFN)(PulseComputePass, uint32_t, const PulseImage*, uint32_t);
|
||||
typedef void (*PulseBindStorageImagesPFN)(PulseComputePass, const PulseImage*, uint32_t);
|
||||
typedef void (*PulseBindComputePipelinePFN)(PulseComputePass, PulseComputePipeline);
|
||||
typedef void (*PulseEndComputePassPFN)(PulseComputePass);
|
||||
|
||||
|
||||
@@ -298,7 +298,7 @@ void TestBufferComputeWrite()
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
||||
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
@@ -367,8 +367,8 @@ void TestBufferComputeCopy()
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseBindStorageBuffers(pass, 0, &read_buffer, 1);
|
||||
PulseBindStorageBuffers(pass, 0, &write_buffer, 1);
|
||||
PulseBindStorageBuffers(pass, &read_buffer, 1);
|
||||
PulseBindStorageBuffers(pass, &write_buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
|
||||
@@ -76,8 +76,8 @@ void TestPipelineReadOnlyBindings()
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
||||
PulseBindStorageImages(pass, 1, &image, 1);
|
||||
PulseBindStorageImages(pass, &image, 1);
|
||||
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
@@ -132,8 +132,8 @@ void TestPipelineWriteOnlyBindings()
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
||||
PulseBindStorageImages(pass, 1, &image, 1);
|
||||
PulseBindStorageImages(pass, &image, 1);
|
||||
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
@@ -196,10 +196,10 @@ void TestPipelineReadWriteBindings()
|
||||
|
||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||
PulseBindStorageBuffers(pass, 0, &read_buffer, 1);
|
||||
PulseBindStorageBuffers(pass, 0, &write_buffer, 1);
|
||||
PulseBindStorageImages(pass, 1, &read_image, 1);
|
||||
PulseBindStorageImages(pass, 1, &write_image, 1);
|
||||
PulseBindStorageImages(pass, &read_image, 1);
|
||||
PulseBindStorageImages(pass, &write_image, 1);
|
||||
PulseBindStorageBuffers(pass, &read_buffer, 1);
|
||||
PulseBindStorageBuffers(pass, &write_buffer, 1);
|
||||
PulseBindComputePipeline(pass, pipeline);
|
||||
PulseDispatchComputations(pass, 32, 32, 1);
|
||||
PulseEndComputePass(pass);
|
||||
|
||||
@@ -14,8 +14,8 @@ struct SSBO
|
||||
|
||||
external
|
||||
{
|
||||
[set(0), binding(0)] read_ssbo: storage[SSBO, readonly],
|
||||
[set(0), binding(1)] read_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(0), binding(0)] read_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(0), binding(1)] read_ssbo: storage[SSBO, readonly],
|
||||
}
|
||||
|
||||
[entry(compute)]
|
||||
|
||||
@@ -14,10 +14,10 @@ struct SSBO
|
||||
|
||||
external
|
||||
{
|
||||
[set(0), binding(0)] read_ssbo: storage[SSBO, readonly],
|
||||
[set(0), binding(1)] read_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(1), binding(0)] write_ssbo: storage[SSBO, writeonly],
|
||||
[set(1), binding(1)] write_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(0), binding(0)] read_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(0), binding(1)] read_ssbo: storage[SSBO, readonly],
|
||||
[set(1), binding(0)] write_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(1), binding(1)] write_ssbo: storage[SSBO, writeonly],
|
||||
}
|
||||
|
||||
[entry(compute)]
|
||||
|
||||
@@ -14,8 +14,8 @@ struct SSBO
|
||||
|
||||
external
|
||||
{
|
||||
[set(1), binding(0)] write_ssbo: storage[SSBO],
|
||||
[set(1), binding(1)] write_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(1), binding(0)] write_texture: texture2D[f32, readonly, rgba8],
|
||||
[set(1), binding(1)] write_ssbo: storage[SSBO],
|
||||
}
|
||||
|
||||
[entry(compute)]
|
||||
|
||||
Reference in New Issue
Block a user