Skip to content

Commit 8e63101

Browse files
tests: Cleanup of DescriptorBuffers
1 parent 2490e6c commit 8e63101

7 files changed

Lines changed: 157 additions & 218 deletions

tests/framework/binding.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,6 +1774,18 @@ void DescriptorSetLayout::Init(const Device &dev, const VkDescriptorSetLayoutCre
17741774
NON_DISPATCHABLE_HANDLE_INIT(vk::CreateDescriptorSetLayout, dev, &info);
17751775
}
17761776

1777+
VkDeviceSize DescriptorSetLayout::GetDescriptorBufferSize() const {
1778+
VkDeviceSize size = 0;
1779+
vk::GetDescriptorSetLayoutSizeEXT(device(), handle(), &size);
1780+
return size;
1781+
}
1782+
1783+
VkDeviceSize DescriptorSetLayout::GetDescriptorBufferBindingOffset(uint32_t binding) const {
1784+
VkDeviceSize size = 0;
1785+
vk::GetDescriptorSetLayoutBindingOffsetEXT(device(), handle(), binding, &size);
1786+
return size;
1787+
}
1788+
17771789
NON_DISPATCHABLE_HANDLE_DTOR(DescriptorPool, vk::DestroyDescriptorPool)
17781790

17791791
void DescriptorPool::Init(const Device &dev, const VkDescriptorPoolCreateInfo &info) {

tests/framework/binding.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,11 @@ class DescriptorSetLayout : public internal::NonDispHandle<VkDescriptorSetLayout
990990

991991
// vkCreateDescriptorSetLayout()
992992
void Init(const Device &dev, const VkDescriptorSetLayoutCreateInfo &info);
993+
994+
// vkGetDescriptorSetLayoutSizeEXT
995+
VkDeviceSize GetDescriptorBufferSize() const;
996+
// vkGetDescriptorSetLayoutBindingOffsetEXT
997+
VkDeviceSize GetDescriptorBufferBindingOffset(uint32_t binding) const;
993998
};
994999

9951000
class DescriptorPool : public internal::NonDispHandle<VkDescriptorPool> {

tests/framework/layer_validation_tests.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ class AndroidExternalResolveTest : public VkLayerTest {
264264
class DescriptorBufferTest : public VkLayerTest {
265265
public:
266266
void InitBasicDescriptorBuffer(void *instance_pnext = nullptr);
267+
268+
VkPhysicalDeviceDescriptorBufferPropertiesEXT descriptor_buffer_properties = vku::InitStructHelper();
267269
};
268270

269271
class DescriptorIndexingTest : public VkLayerTest {

tests/unit/debug_printf.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4976,9 +4976,7 @@ TEST_F(NegativeDebugPrintf, DescriptorBuffer) {
49764976
pipe_layout_ci.pSetLayouts = &ds_layout.handle();
49774977
vkt::PipelineLayout pipeline_layout(*m_device, pipe_layout_ci);
49784978

4979-
VkDeviceSize ds_layout_size = 0;
4980-
vk::GetDescriptorSetLayoutSizeEXT(device(), ds_layout, &ds_layout_size);
4981-
4979+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
49824980
ds_layout_size = Align(ds_layout_size, descriptor_buffer_properties.descriptorBufferOffsetAlignment);
49834981

49844982
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,

tests/unit/descriptor_buffer.cpp

Lines changed: 29 additions & 155 deletions
Large diffs are not rendered by default.

tests/unit/descriptor_buffer_positive.cpp

Lines changed: 107 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@
1515
void DescriptorBufferTest::InitBasicDescriptorBuffer(void *instance_pnext) {
1616
SetTargetApiVersion(VK_API_VERSION_1_2);
1717
AddRequiredExtensions(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME);
18+
AddRequiredExtensions(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
1819
AddRequiredFeature(vkt::Feature::descriptorBuffer);
20+
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
1921
RETURN_IF_SKIP(Init(nullptr, nullptr, instance_pnext));
22+
23+
GetPhysicalDeviceProperties2(descriptor_buffer_properties);
2024
}
2125

2226
class PositiveDescriptorBuffer : public DescriptorBufferTest {};
2327

2428
TEST_F(PositiveDescriptorBuffer, BasicUsage) {
2529
TEST_DESCRIPTION("Create VkBuffer with extension.");
26-
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
30+
SetTargetApiVersion(VK_API_VERSION_1_2);
31+
AddRequiredExtensions(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME);
32+
AddRequiredFeature(vkt::Feature::descriptorBuffer);
33+
RETURN_IF_SKIP(Init());
2734

2835
// *descriptorBufferAddressSpaceSize properties are guaranteed to be 2^27
2936
VkBufferCreateInfo buffer_ci = vku::InitStructHelper();
@@ -48,8 +55,6 @@ TEST_F(PositiveDescriptorBuffer, BasicUsage) {
4855

4956
TEST_F(PositiveDescriptorBuffer, BindBufferAndSetOffset) {
5057
TEST_DESCRIPTION("Bind descriptor buffer and set descriptor offset then draw.");
51-
AddRequiredExtensions(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
52-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
5358
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
5459
InitRenderTarget();
5560

@@ -83,8 +88,6 @@ TEST_F(PositiveDescriptorBuffer, BindBufferAndSetOffset) {
8388

8489
TEST_F(PositiveDescriptorBuffer, UnusedBoundBuffer) {
8590
TEST_DESCRIPTION("https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/10290");
86-
AddRequiredExtensions(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
87-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
8891
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
8992
InitRenderTarget();
9093

@@ -126,10 +129,8 @@ TEST_F(PositiveDescriptorBuffer, UnusedBoundBuffer) {
126129

127130
TEST_F(PositiveDescriptorBuffer, PipelineFlags2) {
128131
TEST_DESCRIPTION("Use descriptor buffer with pipeline created with VkPipelineCreateFlags2CreateInfo");
129-
AddRequiredExtensions(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
130132
AddRequiredExtensions(VK_KHR_MAINTENANCE_5_EXTENSION_NAME);
131133
AddRequiredFeature(vkt::Feature::maintenance5);
132-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
133134
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
134135
InitRenderTarget();
135136

@@ -164,12 +165,8 @@ TEST_F(PositiveDescriptorBuffer, PipelineFlags2) {
164165
}
165166

166167
TEST_F(PositiveDescriptorBuffer, BindingMidBuffer) {
167-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
168168
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
169169

170-
VkPhysicalDeviceDescriptorBufferPropertiesEXT descriptor_buffer_properties = vku::InitStructHelper();
171-
GetPhysicalDeviceProperties2(descriptor_buffer_properties);
172-
173170
m_command_buffer.Begin();
174171

175172
vkt::Buffer buffer(*m_device, 4096, VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, vkt::device_address);
@@ -183,12 +180,8 @@ TEST_F(PositiveDescriptorBuffer, BindingMidBuffer) {
183180

184181
TEST_F(PositiveDescriptorBuffer, Basic) {
185182
TEST_DESCRIPTION("Tries to use a full workflow.");
186-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
187183
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
188184

189-
VkPhysicalDeviceDescriptorBufferPropertiesEXT descriptor_buffer_properties = vku::InitStructHelper();
190-
GetPhysicalDeviceProperties2(descriptor_buffer_properties);
191-
192185
vkt::Buffer buffer_data(*m_device, 16, 0, vkt::device_address);
193186
uint32_t *data = (uint32_t *)buffer_data.Memory().Map();
194187
data[0] = 8;
@@ -197,15 +190,9 @@ TEST_F(PositiveDescriptorBuffer, Basic) {
197190

198191
VkDescriptorSetLayoutBinding binding = {0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr};
199192
vkt::DescriptorSetLayout ds_layout(*m_device, binding, VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT);
193+
vkt::PipelineLayout pipeline_layout(*m_device, {&ds_layout});
200194

201-
VkPipelineLayoutCreateInfo pipe_layout_ci = vku::InitStructHelper();
202-
pipe_layout_ci.setLayoutCount = 1;
203-
pipe_layout_ci.pSetLayouts = &ds_layout.handle();
204-
vkt::PipelineLayout pipeline_layout(*m_device, pipe_layout_ci);
205-
206-
VkDeviceSize ds_layout_size = 0;
207-
vk::GetDescriptorSetLayoutSizeEXT(device(), ds_layout, &ds_layout_size);
208-
195+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
209196
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,
210197
vkt::device_address);
211198

@@ -267,12 +254,8 @@ TEST_F(PositiveDescriptorBuffer, Basic) {
267254

268255
TEST_F(PositiveDescriptorBuffer, MultipleSet) {
269256
TEST_DESCRIPTION("Have a single VkBuffer of data spread across 3 different sets.");
270-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
271257
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
272258

273-
VkPhysicalDeviceDescriptorBufferPropertiesEXT descriptor_buffer_properties = vku::InitStructHelper();
274-
GetPhysicalDeviceProperties2(descriptor_buffer_properties);
275-
276259
vkt::Buffer buffer_data(*m_device, 16, 0, vkt::device_address);
277260
uint32_t *data = (uint32_t *)buffer_data.Memory().Map();
278261
data[0] = 8;
@@ -281,16 +264,9 @@ TEST_F(PositiveDescriptorBuffer, MultipleSet) {
281264

282265
VkDescriptorSetLayoutBinding binding = {0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr};
283266
vkt::DescriptorSetLayout ds_layout(*m_device, binding, VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT);
267+
vkt::PipelineLayout pipeline_layout(*m_device, {&ds_layout, &ds_layout, &ds_layout});
284268

285-
const VkDescriptorSetLayout set_layouts[3] = {ds_layout, ds_layout, ds_layout};
286-
VkPipelineLayoutCreateInfo pipe_layout_ci = vku::InitStructHelper();
287-
pipe_layout_ci.setLayoutCount = 3;
288-
pipe_layout_ci.pSetLayouts = set_layouts;
289-
vkt::PipelineLayout pipeline_layout(*m_device, pipe_layout_ci);
290-
291-
VkDeviceSize ds_layout_size = 0;
292-
vk::GetDescriptorSetLayoutSizeEXT(device(), ds_layout, &ds_layout_size);
293-
269+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
294270
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size * 3, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,
295271
vkt::device_address);
296272

@@ -378,12 +354,8 @@ TEST_F(PositiveDescriptorBuffer, MultipleSet) {
378354

379355
TEST_F(PositiveDescriptorBuffer, MultipleBinding) {
380356
TEST_DESCRIPTION("Have a single VkBuffer of data spread across 3 different bindings in the same set.");
381-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
382357
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
383358

384-
VkPhysicalDeviceDescriptorBufferPropertiesEXT descriptor_buffer_properties = vku::InitStructHelper();
385-
GetPhysicalDeviceProperties2(descriptor_buffer_properties);
386-
387359
vkt::Buffer buffer_data(*m_device, 16, 0, vkt::device_address);
388360
uint32_t *data = (uint32_t *)buffer_data.Memory().Map();
389361
data[0] = 8;
@@ -394,20 +366,9 @@ TEST_F(PositiveDescriptorBuffer, MultipleBinding) {
394366
{1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr},
395367
{2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr}};
396368
vkt::DescriptorSetLayout ds_layout(*m_device, bindings, VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT);
369+
vkt::PipelineLayout pipeline_layout(*m_device, {&ds_layout});
397370

398-
VkPipelineLayoutCreateInfo pipe_layout_ci = vku::InitStructHelper();
399-
pipe_layout_ci.setLayoutCount = 1;
400-
pipe_layout_ci.pSetLayouts = &ds_layout.handle();
401-
vkt::PipelineLayout pipeline_layout(*m_device, pipe_layout_ci);
402-
403-
VkDeviceSize ds_layout_size = 0;
404-
vk::GetDescriptorSetLayoutSizeEXT(device(), ds_layout, &ds_layout_size);
405-
406-
VkDeviceSize ds_layout_binding_offsets[3];
407-
vk::GetDescriptorSetLayoutBindingOffsetEXT(device(), ds_layout, 0, &ds_layout_binding_offsets[0]);
408-
vk::GetDescriptorSetLayoutBindingOffsetEXT(device(), ds_layout, 1, &ds_layout_binding_offsets[1]);
409-
vk::GetDescriptorSetLayoutBindingOffsetEXT(device(), ds_layout, 2, &ds_layout_binding_offsets[2]);
410-
371+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
411372
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,
412373
vkt::device_address);
413374

@@ -427,13 +388,15 @@ TEST_F(PositiveDescriptorBuffer, MultipleBinding) {
427388

428389
// Sets data_buffer[1] to binding 1
429390
addr_info.address += 4;
391+
VkDeviceSize ds_layout_binding_offset = ds_layout.GetDescriptorBufferBindingOffset(1);
430392
vk::GetDescriptorEXT(device(), &buffer_descriptor_info, descriptor_buffer_properties.storageBufferDescriptorSize,
431-
mapped_descriptor_data + ds_layout_binding_offsets[1]);
393+
mapped_descriptor_data + ds_layout_binding_offset);
432394

433395
// Sets data_buffer[2] to binding 2
434396
addr_info.address += 4;
397+
ds_layout_binding_offset = ds_layout.GetDescriptorBufferBindingOffset(2);
435398
vk::GetDescriptorEXT(device(), &buffer_descriptor_info, descriptor_buffer_properties.storageBufferDescriptorSize,
436-
mapped_descriptor_data + ds_layout_binding_offsets[2]);
399+
mapped_descriptor_data + ds_layout_binding_offset);
437400

438401
char const *cs_source = R"glsl(
439402
#version 450
@@ -487,7 +450,6 @@ TEST_F(PositiveDescriptorBuffer, BindingInfoUsage2) {
487450
TEST_DESCRIPTION("https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/9228");
488451
AddRequiredExtensions(VK_KHR_MAINTENANCE_5_EXTENSION_NAME);
489452
AddRequiredFeature(vkt::Feature::maintenance5);
490-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
491453
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
492454

493455
VkBufferUsageFlags2CreateInfo buffer_usage_flags = vku::InitStructHelper();
@@ -515,7 +477,6 @@ TEST_F(PositiveDescriptorBuffer, DescriptorBufferBindingInfoUsage2) {
515477
TEST_DESCRIPTION("https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/9228");
516478
AddRequiredExtensions(VK_KHR_MAINTENANCE_5_EXTENSION_NAME);
517479
AddRequiredFeature(vkt::Feature::maintenance5);
518-
AddRequiredFeature(vkt::Feature::bufferDeviceAddress);
519480
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
520481

521482
vkt::Buffer buffer(*m_device, 4096, VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, vkt::device_address);
@@ -530,3 +491,92 @@ TEST_F(PositiveDescriptorBuffer, DescriptorBufferBindingInfoUsage2) {
530491
vk::CmdBindDescriptorBuffersEXT(m_command_buffer, 1, &dbbi);
531492
m_command_buffer.End();
532493
}
494+
495+
TEST_F(PositiveDescriptorBuffer, TexelBuffer) {
496+
RETURN_IF_SKIP(InitBasicDescriptorBuffer());
497+
498+
vkt::Buffer stroage_buffer(*m_device, 32, VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, vkt::device_address);
499+
vkt::BufferView stroage_buffer_view(*m_device, stroage_buffer, VK_FORMAT_R32_UINT);
500+
vkt::Buffer uniform_buffer(*m_device, 32, VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, vkt::device_address);
501+
vkt::BufferView uniform_buffer_view(*m_device, uniform_buffer, VK_FORMAT_R32_UINT);
502+
503+
uint32_t *data = (uint32_t *)uniform_buffer.Memory().Map();
504+
data[0] = 8;
505+
data[1] = 12;
506+
data[2] = 1;
507+
data[3] = 4;
508+
509+
std::vector<VkDescriptorSetLayoutBinding> bindings = {
510+
{0, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr},
511+
{1, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr}};
512+
vkt::DescriptorSetLayout ds_layout(*m_device, bindings, VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT);
513+
vkt::PipelineLayout pipeline_layout(*m_device, {&ds_layout});
514+
515+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
516+
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,
517+
vkt::device_address);
518+
519+
VkDescriptorAddressInfoEXT addr_info = vku::InitStructHelper();
520+
addr_info.address = stroage_buffer.Address();
521+
addr_info.range = 32;
522+
addr_info.format = VK_FORMAT_R32_UINT;
523+
524+
VkDescriptorGetInfoEXT buffer_descriptor_info = vku::InitStructHelper();
525+
buffer_descriptor_info.type = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
526+
buffer_descriptor_info.data.pStorageTexelBuffer = &addr_info;
527+
528+
uint8_t *mapped_descriptor_data = (uint8_t *)descriptor_buffer.Memory().Map();
529+
vk::GetDescriptorEXT(device(), &buffer_descriptor_info, descriptor_buffer_properties.storageTexelBufferDescriptorSize,
530+
mapped_descriptor_data);
531+
532+
addr_info.address = uniform_buffer.Address();
533+
buffer_descriptor_info.type = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
534+
buffer_descriptor_info.data.pUniformTexelBuffer = &addr_info;
535+
VkDeviceSize ds_layout_binding_offset = ds_layout.GetDescriptorBufferBindingOffset(1);
536+
vk::GetDescriptorEXT(device(), &buffer_descriptor_info, descriptor_buffer_properties.storageTexelBufferDescriptorSize,
537+
mapped_descriptor_data + ds_layout_binding_offset);
538+
539+
char const *cs_source = R"glsl(
540+
#version 450
541+
layout(set = 0, binding = 0, r32ui) uniform uimageBuffer s_buffer;
542+
layout(set = 0, binding = 1) uniform usamplerBuffer u_buffer;
543+
544+
void main() {
545+
imageStore(s_buffer, 0, texelFetch(u_buffer, 0));
546+
imageStore(s_buffer, 1, texelFetch(u_buffer, 1));
547+
imageStore(s_buffer, 2, texelFetch(u_buffer, 2));
548+
imageStore(s_buffer, 3, texelFetch(u_buffer, 3));
549+
}
550+
)glsl";
551+
552+
CreateComputePipelineHelper pipe(*this);
553+
pipe.cs_ = VkShaderObj(this, cs_source, VK_SHADER_STAGE_COMPUTE_BIT, SPV_ENV_VULKAN_1_2);
554+
pipe.cp_ci_.flags |= VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT;
555+
pipe.cp_ci_.layout = pipeline_layout;
556+
pipe.CreateComputePipeline();
557+
558+
m_command_buffer.Begin();
559+
vk::CmdBindPipeline(m_command_buffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipe);
560+
561+
VkDescriptorBufferBindingInfoEXT descriptor_buffer_binding_info = vku::InitStructHelper();
562+
descriptor_buffer_binding_info.address = descriptor_buffer.Address();
563+
descriptor_buffer_binding_info.usage = VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT;
564+
vk::CmdBindDescriptorBuffersEXT(m_command_buffer, 1, &descriptor_buffer_binding_info);
565+
566+
uint32_t buffer_index = 0;
567+
VkDeviceSize buffer_offset = 0;
568+
vk::CmdSetDescriptorBufferOffsetsEXT(m_command_buffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipeline_layout, 0, 1, &buffer_index,
569+
&buffer_offset);
570+
vk::CmdDispatch(m_command_buffer, 1, 1, 1);
571+
m_command_buffer.End();
572+
573+
m_default_queue->SubmitAndWait(m_command_buffer);
574+
575+
data = (uint32_t *)stroage_buffer.Memory().Map();
576+
if (!IsPlatformMockICD()) {
577+
ASSERT_TRUE(data[0] == 8);
578+
ASSERT_TRUE(data[1] == 12);
579+
ASSERT_TRUE(data[2] == 1);
580+
ASSERT_TRUE(data[3] == 4);
581+
}
582+
}

tests/unit/gpu_av_descriptor_buffer_positive.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ TEST_F(PositiveGpuAVDescriptorBuffer, Basic) {
4141
pipe_layout_ci.pSetLayouts = &ds_layout.handle();
4242
vkt::PipelineLayout pipeline_layout(*m_device, pipe_layout_ci);
4343

44-
VkDeviceSize ds_layout_size = 0;
45-
vk::GetDescriptorSetLayoutSizeEXT(device(), ds_layout, &ds_layout_size);
46-
44+
VkDeviceSize ds_layout_size = ds_layout.GetDescriptorBufferSize();
4745
ds_layout_size = Align(ds_layout_size, descriptor_buffer_properties.descriptorBufferOffsetAlignment);
4846

4947
vkt::Buffer descriptor_buffer(*m_device, ds_layout_size, VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT,

0 commit comments

Comments
 (0)