diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-11 15:29:21 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-15 10:16:02 -0600 |
| commit | 609c6c84318e264fdb6c9e7d5997cc1bae16d707 (patch) | |
| tree | 782ef1a24eb807a6dc227b73e64c929b4de47d10 | |
| parent | c6bc61de8e7088ed3b97ae3258f038129d831432 (diff) | |
| download | usermoji-609c6c84318e264fdb6c9e7d5997cc1bae16d707.tar.xz | |
Bug 14583: Remove VkBufferView for UBO/SSBO descriptor types
For descriptor types:
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
No longer need to create a VkBufferView, instead can
put the buffer, offset and range directly into a descriptor.
Many places in the driver assumed it could point to a persistent
buffer view and that is no longer the case. Now cache the
view info rather than a pointer to deal with that.
| -rw-r--r-- | demos/cube.c | 17 | ||||
| -rw-r--r-- | include/vulkan.h | 7 |
2 files changed, 10 insertions, 14 deletions
diff --git a/demos/cube.c b/demos/cube.c index 8f8390cd..13565d34 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -363,7 +363,6 @@ struct demo { struct { VkBuffer buf; VkDeviceMemory mem; - VkBufferView view; VkDescriptorInfo desc; } uniform_data; @@ -1259,7 +1258,6 @@ static void demo_prepare_textures(struct demo *demo) void demo_prepare_cube_data_buffer(struct demo *demo) { VkBufferCreateInfo buf_info; - VkBufferViewCreateInfo view_info; VkMemoryAllocInfo alloc_info = { .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO, .pNext = NULL, @@ -1321,17 +1319,9 @@ void demo_prepare_cube_data_buffer(struct demo *demo) demo->uniform_data.mem, 0); assert(!err); - memset(&view_info, 0, sizeof(view_info)); - view_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; - view_info.buffer = demo->uniform_data.buf; - view_info.viewType = VK_BUFFER_VIEW_TYPE_RAW; - view_info.offset = 0; - view_info.range = sizeof(data); - - err = vkCreateBufferView(demo->device, &view_info, &demo->uniform_data.view); - assert(!err); - - demo->uniform_data.desc.bufferView = demo->uniform_data.view; + demo->uniform_data.desc.shaderBuffer.buffer = demo->uniform_data.buf; + demo->uniform_data.desc.shaderBuffer.offset = 0; + demo->uniform_data.desc.shaderBuffer.range = sizeof(data); } static void demo_prepare_descriptor_layout(struct demo *demo) @@ -1952,7 +1942,6 @@ static void demo_cleanup(struct demo *demo) vkDestroyImage(demo->device, demo->depth.image); vkFreeMemory(demo->device, demo->depth.mem); - vkDestroyBufferView(demo->device, demo->uniform_data.view); vkDestroyBuffer(demo->device, demo->uniform_data.buf); vkFreeMemory(demo->device, demo->uniform_data.mem); diff --git a/include/vulkan.h b/include/vulkan.h index 15e96c15..c031488d 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -1779,10 +1779,17 @@ typedef struct { } VkDescriptorPoolCreateInfo; typedef struct { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkShaderBufferInfo; + +typedef struct { VkBufferView bufferView; VkSampler sampler; VkImageView imageView; VkImageLayout imageLayout; + VkShaderBufferInfo shaderBuffer; } VkDescriptorInfo; typedef struct { |
