mirror of
https://github.com/Kbz-8/Pulse.git
synced 2026-01-11 15:33:34 +00:00
removing starting_slot argument
This commit is contained in:
@@ -46,7 +46,7 @@ int main(void)
|
|||||||
CHECK_PULSE_HANDLE_RETVAL(pipeline, 1);
|
CHECK_PULSE_HANDLE_RETVAL(pipeline, 1);
|
||||||
|
|
||||||
PulseBufferCreateInfo buffer_create_info = { 0 };
|
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;
|
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);
|
PulseBuffer buffer = PulseCreateBuffer(device, &buffer_create_info);
|
||||||
@@ -59,7 +59,7 @@ int main(void)
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
CHECK_PULSE_HANDLE_RETVAL(pass, 1);
|
CHECK_PULSE_HANDLE_RETVAL(pass, 1);
|
||||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
@@ -71,7 +71,7 @@ int main(void)
|
|||||||
|
|
||||||
void* ptr;
|
void* ptr;
|
||||||
PulseMapBuffer(buffer, &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]);
|
printf("%d, ", ((int32_t*)ptr)[i]);
|
||||||
puts("");
|
puts("");
|
||||||
PulseUnmapBuffer(buffer);
|
PulseUnmapBuffer(buffer);
|
||||||
@@ -84,6 +84,6 @@ int main(void)
|
|||||||
|
|
||||||
PulseDestroyDevice(device);
|
PulseDestroyDevice(device);
|
||||||
PulseUnloadBackend(backend);
|
PulseUnloadBackend(backend);
|
||||||
puts("Successfully loaded Pulse using Vulkan !");
|
puts("Successfully executed Pulse example using Vulkan !");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280,9 +280,9 @@ PULSE_API PulseComputePipeline PulseCreateComputePipeline(PulseDevice device, co
|
|||||||
PULSE_API void PulseDestroyComputePipeline(PulseDevice device, PulseComputePipeline pipeline);
|
PULSE_API void PulseDestroyComputePipeline(PulseDevice device, PulseComputePipeline pipeline);
|
||||||
|
|
||||||
PULSE_API PulseComputePass PulseBeginComputePass(PulseCommandList cmd);
|
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 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 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 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);
|
PULSE_API void PulseDispatchComputationsIndirect(PulseComputePass pass, PulseBuffer buffer, uint32_t offset);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ void VulkanDestroyComputePass(PulseDevice device, PulseComputePass pass)
|
|||||||
free(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;
|
PulseBufferUsageFlags usage = buffers[0]->usage;
|
||||||
bool is_readwrite = (usage & PULSE_BUFFER_USAGE_STORAGE_WRITE) != 0;
|
bool is_readwrite = (usage & PULSE_BUFFER_USAGE_STORAGE_WRITE) != 0;
|
||||||
@@ -58,9 +58,9 @@ void VulkanBindStorageBuffers(PulseComputePass pass, uint32_t starting_slot, con
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(array[starting_slot + i] == buffers[i])
|
if(array[i] == buffers[i])
|
||||||
continue;
|
continue;
|
||||||
array[starting_slot + i] = buffers[i];
|
array[i] = buffers[i];
|
||||||
|
|
||||||
if(is_readwrite)
|
if(is_readwrite)
|
||||||
vulkan_pass->should_recreate_write_descriptor_sets = true;
|
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;
|
PulseImageUsageFlags usage = images[0]->usage;
|
||||||
bool is_readwrite = (usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0;
|
bool is_readwrite = (usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0;
|
||||||
@@ -97,9 +97,9 @@ void VulkanBindStorageImages(PulseComputePass pass, uint32_t starting_slot, cons
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(array[starting_slot + i] == images[i])
|
if(array[i] == images[i])
|
||||||
continue;
|
continue;
|
||||||
array[starting_slot + i] = images[i];
|
array[i] = images[i];
|
||||||
|
|
||||||
if((usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0)
|
if((usage & PULSE_IMAGE_USAGE_STORAGE_WRITE) != 0)
|
||||||
vulkan_pass->should_recreate_write_descriptor_sets = true;
|
vulkan_pass->should_recreate_write_descriptor_sets = true;
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ void VulkanDestroyComputePass(PulseDevice device, PulseComputePass pass);
|
|||||||
|
|
||||||
PulseComputePass VulkanBeginComputePass(PulseCommandList cmd);
|
PulseComputePass VulkanBeginComputePass(PulseCommandList cmd);
|
||||||
void VulkanEndComputePass(PulseComputePass pass);
|
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 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 VulkanBindComputePipeline(PulseComputePass pass, PulseComputePipeline pipeline);
|
||||||
void VulkanDispatchComputations(PulseComputePass pass, uint32_t groupcount_x, uint32_t groupcount_y, uint32_t groupcount_z);
|
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++)
|
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];
|
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||||
|
|
||||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
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++)
|
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];
|
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||||
|
|
||||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
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++)
|
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];
|
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||||
|
|
||||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
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++)
|
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];
|
VkWriteDescriptorSet* write_descriptor_set = &writes[write_count];
|
||||||
|
|
||||||
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
write_descriptor_set->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ PULSE_API PulseComputePass PulseBeginComputePass(PulseCommandList cmd)
|
|||||||
return pass;
|
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_HANDLE(pass);
|
||||||
|
|
||||||
PULSE_CHECK_COMMAND_LIST_STATE(pass->cmd);
|
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)
|
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);
|
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_HANDLE(pass);
|
||||||
|
|
||||||
PULSE_CHECK_COMMAND_LIST_STATE(pass->cmd);
|
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)
|
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 (*PulseCopyImageToBufferPFN)(PulseCommandList, const PulseImageRegion*, const PulseBufferRegion*);
|
||||||
typedef bool (*PulseBlitImagePFN)(PulseCommandList, const PulseImageRegion*, const PulseImageRegion*);
|
typedef bool (*PulseBlitImagePFN)(PulseCommandList, const PulseImageRegion*, const PulseImageRegion*);
|
||||||
typedef PulseComputePass (*PulseBeginComputePassPFN)(PulseCommandList);
|
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 (*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 (*PulseBindComputePipelinePFN)(PulseComputePass, PulseComputePipeline);
|
||||||
typedef void (*PulseEndComputePassPFN)(PulseComputePass);
|
typedef void (*PulseEndComputePassPFN)(PulseComputePass);
|
||||||
|
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ void TestBufferComputeWrite()
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
@@ -367,8 +367,8 @@ void TestBufferComputeCopy()
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||||
PulseBindStorageBuffers(pass, 0, &read_buffer, 1);
|
PulseBindStorageBuffers(pass, &read_buffer, 1);
|
||||||
PulseBindStorageBuffers(pass, 0, &write_buffer, 1);
|
PulseBindStorageBuffers(pass, &write_buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ void TestPipelineReadOnlyBindings()
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
PulseBindStorageImages(pass, &image, 1);
|
||||||
PulseBindStorageImages(pass, 1, &image, 1);
|
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
@@ -132,8 +132,8 @@ void TestPipelineWriteOnlyBindings()
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||||
PulseBindStorageBuffers(pass, 0, &buffer, 1);
|
PulseBindStorageImages(pass, &image, 1);
|
||||||
PulseBindStorageImages(pass, 1, &image, 1);
|
PulseBindStorageBuffers(pass, &buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
@@ -196,10 +196,10 @@ void TestPipelineReadWriteBindings()
|
|||||||
|
|
||||||
PulseComputePass pass = PulseBeginComputePass(cmd);
|
PulseComputePass pass = PulseBeginComputePass(cmd);
|
||||||
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
TEST_ASSERT_NOT_EQUAL_MESSAGE(pass, PULSE_NULL_HANDLE, PulseVerbaliseErrorType(PulseGetLastErrorType()));
|
||||||
PulseBindStorageBuffers(pass, 0, &read_buffer, 1);
|
PulseBindStorageImages(pass, &read_image, 1);
|
||||||
PulseBindStorageBuffers(pass, 0, &write_buffer, 1);
|
PulseBindStorageImages(pass, &write_image, 1);
|
||||||
PulseBindStorageImages(pass, 1, &read_image, 1);
|
PulseBindStorageBuffers(pass, &read_buffer, 1);
|
||||||
PulseBindStorageImages(pass, 1, &write_image, 1);
|
PulseBindStorageBuffers(pass, &write_buffer, 1);
|
||||||
PulseBindComputePipeline(pass, pipeline);
|
PulseBindComputePipeline(pass, pipeline);
|
||||||
PulseDispatchComputations(pass, 32, 32, 1);
|
PulseDispatchComputations(pass, 32, 32, 1);
|
||||||
PulseEndComputePass(pass);
|
PulseEndComputePass(pass);
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ struct SSBO
|
|||||||
|
|
||||||
external
|
external
|
||||||
{
|
{
|
||||||
[set(0), binding(0)] read_ssbo: storage[SSBO, readonly],
|
[set(0), binding(0)] read_texture: texture2D[f32, readonly, rgba8],
|
||||||
[set(0), binding(1)] read_texture: texture2D[f32, readonly, rgba8],
|
[set(0), binding(1)] read_ssbo: storage[SSBO, readonly],
|
||||||
}
|
}
|
||||||
|
|
||||||
[entry(compute)]
|
[entry(compute)]
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ struct SSBO
|
|||||||
|
|
||||||
external
|
external
|
||||||
{
|
{
|
||||||
[set(0), binding(0)] read_ssbo: storage[SSBO, readonly],
|
[set(0), binding(0)] read_texture: texture2D[f32, readonly, rgba8],
|
||||||
[set(0), binding(1)] read_texture: texture2D[f32, readonly, rgba8],
|
[set(0), binding(1)] read_ssbo: storage[SSBO, readonly],
|
||||||
[set(1), binding(0)] write_ssbo: storage[SSBO, writeonly],
|
[set(1), binding(0)] write_texture: texture2D[f32, readonly, rgba8],
|
||||||
[set(1), binding(1)] write_texture: texture2D[f32, readonly, rgba8],
|
[set(1), binding(1)] write_ssbo: storage[SSBO, writeonly],
|
||||||
}
|
}
|
||||||
|
|
||||||
[entry(compute)]
|
[entry(compute)]
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ struct SSBO
|
|||||||
|
|
||||||
external
|
external
|
||||||
{
|
{
|
||||||
[set(1), binding(0)] write_ssbo: storage[SSBO],
|
[set(1), binding(0)] write_texture: texture2D[f32, readonly, rgba8],
|
||||||
[set(1), binding(1)] write_texture: texture2D[f32, readonly, rgba8],
|
[set(1), binding(1)] write_ssbo: storage[SSBO],
|
||||||
}
|
}
|
||||||
|
|
||||||
[entry(compute)]
|
[entry(compute)]
|
||||||
|
|||||||
Reference in New Issue
Block a user