Skip to content

Commit 35f388e

Browse files
committed
tests: Add AddressRange helper
1 parent 14de3c0 commit 35f388e

File tree

4 files changed

+45
-48
lines changed

4 files changed

+45
-48
lines changed

tests/framework/binding.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,13 @@ VkDeviceAddress Buffer::Address() const {
11831183
}
11841184
}
11851185

1186+
VkDeviceAddressRangeEXT Buffer::AddressRange() const {
1187+
VkDeviceAddressRangeEXT range;
1188+
range.address = Address();
1189+
range.size = create_info_.size;
1190+
return range;
1191+
}
1192+
11861193
NON_DISPATCHABLE_HANDLE_DTOR(BufferView, vk::DestroyBufferView)
11871194

11881195
void BufferView::Init(const Device &dev, const VkBufferViewCreateInfo &info) {

tests/framework/binding.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
2-
* Copyright (c) 2015-2016, 2020-2025 The Khronos Group Inc.
3-
* Copyright (c) 2015-2016, 2020-2025 Valve Corporation
4-
* Copyright (c) 2015-2016, 2020-2025 LunarG, Inc.
2+
* Copyright (c) 2015-2016, 2020-2026 The Khronos Group Inc.
3+
* Copyright (c) 2015-2016, 2020-2026 Valve Corporation
4+
* Copyright (c) 2015-2016, 2020-2026 LunarG, Inc.
55
* Copyright (C) 2025 Arm Limited.
66
*
77
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -660,6 +660,7 @@ class Buffer : public internal::NonDispHandle<VkBuffer> {
660660
}
661661

662662
[[nodiscard]] VkDeviceAddress Address() const;
663+
[[nodiscard]] VkDeviceAddressRangeEXT AddressRange() const;
663664

664665
private:
665666
VkBufferCreateInfo create_info_;

tests/unit/descriptor_heap.cpp

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ void DescriptorHeapTest::CreateSamplerHeap(VkDeviceSize app_size, bool use_embed
5353

5454
void DescriptorHeapTest::BindResourceHeap() {
5555
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
56-
bind_resource_info.heapRange.address = resource_heap_.Address();
57-
bind_resource_info.heapRange.size = resource_heap_.CreateInfo().size;
56+
bind_resource_info.heapRange = resource_heap_.AddressRange();
5857
bind_resource_info.reservedRangeOffset = resource_heap_.CreateInfo().size - heap_props.minResourceHeapReservedRange;
5958
bind_resource_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
6059
vk::CmdBindResourceHeapEXT(m_command_buffer, &bind_resource_info);
@@ -64,8 +63,7 @@ void DescriptorHeapTest::BindSamplerHeap() {
6463
const VkDeviceSize min_reserved_range =
6564
embedded_samplers ? heap_props.minSamplerHeapReservedRangeWithEmbedded : heap_props.minSamplerHeapReservedRange;
6665
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
67-
bind_resource_info.heapRange.address = sampler_heap_.Address();
68-
bind_resource_info.heapRange.size = sampler_heap_.CreateInfo().size;
66+
bind_resource_info.heapRange = sampler_heap_.AddressRange();
6967
bind_resource_info.reservedRangeOffset = sampler_heap_.CreateInfo().size - min_reserved_range;
7068
bind_resource_info.reservedRangeSize = min_reserved_range;
7169
vk::CmdBindSamplerHeapEXT(m_command_buffer, &bind_resource_info);
@@ -1218,7 +1216,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindSamplerHeapReservedRangeSize) {
12181216
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
12191217

12201218
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1221-
bind_info.heapRange = {heap.Address(), heap_size};
1219+
bind_info.heapRange = heap.AddressRange();
12221220
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange - 1;
12231221

12241222
m_command_buffer.Begin();
@@ -1266,7 +1264,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindSamplerHeapReservedRangeAlign) {
12661264
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
12671265

12681266
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1269-
bind_info.heapRange = {heap.Address(), heap_size};
1267+
bind_info.heapRange = heap.AddressRange();
12701268
bind_info.reservedRangeOffset = 1;
12711269
bind_info.reservedRangeSize = heap_size / 2;
12721270

@@ -1299,7 +1297,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindSamplerHeapSecondaryBuffer) {
12991297
secondary.Begin(&cbbi);
13001298

13011299
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1302-
bind_info.heapRange = {heap.Address(), heap_size};
1300+
bind_info.heapRange = heap.AddressRange();
13031301
bind_info.reservedRangeOffset = heap_props.samplerDescriptorSize;
13041302
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
13051303

@@ -1326,7 +1324,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeap) {
13261324
{
13271325
// reservedRangeOffset check
13281326
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1329-
bind_info.heapRange = {heap.Address(), heap_size};
1327+
bind_info.heapRange = heap.AddressRange();
13301328
bind_info.reservedRangeOffset = app_size;
13311329
bind_info.reservedRangeSize = heap_size;
13321330

@@ -1340,7 +1338,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeap) {
13401338
if (heap_props.minResourceHeapReservedRange > 0) {
13411339
// size check
13421340
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1343-
bind_info.heapRange = {heap.Address(), heap_size};
1341+
bind_info.heapRange = heap.AddressRange();
13441342
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange - 1;
13451343

13461344
m_command_buffer.Begin();
@@ -1417,7 +1415,7 @@ TEST_F(NegativeDescriptorHeap, SamplerInheritance) {
14171415
m_command_buffer.Begin();
14181416

14191417
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1420-
bind_info.heapRange = {heap.Address(), heap_size};
1418+
bind_info.heapRange = heap.AddressRange();
14211419
bind_info.reservedRangeOffset = 0;
14221420
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
14231421

@@ -1460,7 +1458,7 @@ TEST_F(NegativeDescriptorHeap, ResourceInheritance) {
14601458
m_command_buffer.Begin();
14611459

14621460
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1463-
bind_info.heapRange = {heap.Address(), heap_size};
1461+
bind_info.heapRange = heap.AddressRange();
14641462
bind_info.reservedRangeOffset = 0;
14651463
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
14661464

@@ -1514,7 +1512,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeapReservedRangeAlign) {
15141512

15151513
// reservedRangeOffset alignment check
15161514
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1517-
bind_info.heapRange = {heap.Address(), heap_size};
1515+
bind_info.heapRange = heap.AddressRange();
15181516
bind_info.reservedRangeOffset = 1;
15191517
bind_info.reservedRangeSize = heap_size / 2;
15201518

@@ -1549,7 +1547,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeapSecondaryBuffer) {
15491547
secondary.Begin(&cbbi);
15501548

15511549
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1552-
bind_info.heapRange = {heap.Address(), heap_size};
1550+
bind_info.heapRange = heap.AddressRange();
15531551
bind_info.reservedRangeOffset = descriptor_size;
15541552
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
15551553

@@ -1598,7 +1596,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeapSecondaryBufferMemoryTests) {
15981596
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
15991597

16001598
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1601-
bind_info.heapRange = {heap.Address(), heap_size};
1599+
bind_info.heapRange = heap.AddressRange();
16021600
bind_info.reservedRangeOffset = heap_props.samplerDescriptorAlignment;
16031601
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
16041602

@@ -1635,7 +1633,7 @@ TEST_F(NegativeDescriptorHeap, CmdBindResourceHeapSecondaryBufferMemoryTests) {
16351633
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
16361634

16371635
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1638-
bind_info.heapRange = {heap.Address(), heap_size};
1636+
bind_info.heapRange = heap.AddressRange();
16391637
bind_info.reservedRangeOffset = 0;
16401638
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
16411639

@@ -2766,7 +2764,7 @@ TEST_F(NegativeDescriptorHeap, BindHeapInfoBufferHeapUsage) {
27662764
vkt::Buffer buffer(*m_device, bdsize, 0, vkt::device_address);
27672765

27682766
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
2769-
bind_info.heapRange = {buffer.Address(), bdsize};
2767+
bind_info.heapRange = buffer.AddressRange();
27702768
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
27712769

27722770
m_errorMonitor->SetDesiredError("VUID-vkCmdBindSamplerHeapEXT-heapRange-11230");
@@ -2780,7 +2778,7 @@ TEST_F(NegativeDescriptorHeap, BindHeapInfoBufferHeapUsage) {
27802778
vkt::Buffer buffer(*m_device, bdsize, 0, vkt::device_address);
27812779

27822780
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
2783-
bind_info.heapRange = {buffer.Address(), bdsize};
2781+
bind_info.heapRange = buffer.AddressRange();
27842782
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
27852783

27862784
m_errorMonitor->SetDesiredError("VUID-vkCmdBindResourceHeapEXT-heapRange-11237");
@@ -2810,7 +2808,7 @@ TEST_F(NegativeDescriptorHeap, BindHeapInfoBufferHeapUsage) {
28102808
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
28112809

28122810
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
2813-
bind_info.heapRange = {heap.Address(), heap_size};
2811+
bind_info.heapRange = heap.AddressRange();
28142812
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
28152813

28162814
heap.Memory().Destroy();
@@ -2841,7 +2839,7 @@ TEST_F(NegativeDescriptorHeap, BindHeapInfoBufferHeapUsage) {
28412839
vkt::Buffer heap(*m_device, heap_size, VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, vkt::device_address);
28422840

28432841
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
2844-
bind_info.heapRange = {heap.Address(), heap_size};
2842+
bind_info.heapRange = heap.AddressRange();
28452843
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
28462844

28472845
heap.Memory().Destroy();
@@ -2873,14 +2871,12 @@ TEST_F(NegativeDescriptorHeap, BindOverlappingRangesSampler) {
28732871
cmd_buffer3.Begin();
28742872

28752873
VkBindHeapInfoEXT bind_info1 = vku::InitStructHelper();
2876-
bind_info1.heapRange.address = heap.Address();
2877-
bind_info1.heapRange.size = heap_size;
2874+
bind_info1.heapRange = heap.AddressRange();
28782875
bind_info1.reservedRangeOffset = 0;
28792876
bind_info1.reservedRangeSize = heap_size / 2;
28802877

28812878
VkBindHeapInfoEXT bind_info2 = vku::InitStructHelper();
2882-
bind_info2.heapRange.address = heap.Address();
2883-
bind_info2.heapRange.size = heap_size;
2879+
bind_info2.heapRange = heap.AddressRange();
28842880
bind_info2.reservedRangeOffset = heap_size / 4;
28852881
bind_info2.reservedRangeSize = heap_size / 2;
28862882

@@ -2931,14 +2927,12 @@ TEST_F(NegativeDescriptorHeap, BindOverlappingRangesResource) {
29312927
cmd_buffer3.Begin();
29322928

29332929
VkBindHeapInfoEXT bind_info1 = vku::InitStructHelper();
2934-
bind_info1.heapRange.address = heap.Address();
2935-
bind_info1.heapRange.size = heap_size;
2930+
bind_info1.heapRange = heap.AddressRange();
29362931
bind_info1.reservedRangeOffset = 0;
29372932
bind_info1.reservedRangeSize = heap_size / 2;
29382933

29392934
VkBindHeapInfoEXT bind_info2 = vku::InitStructHelper();
2940-
bind_info2.heapRange.address = heap.Address();
2941-
bind_info2.heapRange.size = heap_size;
2935+
bind_info2.heapRange = heap.AddressRange();
29422936
bind_info2.reservedRangeOffset = heap_size / 4;
29432937
bind_info2.reservedRangeSize = heap_size / 2;
29442938

@@ -3894,7 +3888,7 @@ TEST_F(NegativeDescriptorHeap, EmbeddedSamplerReservedArea) {
38943888

38953889
// reservedRangeOffset check
38963890
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
3897-
bind_info.heapRange = {buffer.Address(), bdsize};
3891+
bind_info.heapRange = buffer.AddressRange();
38983892
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRangeWithEmbedded - 1;
38993893

39003894
// Resource descriptor heap buffer
@@ -4066,7 +4060,7 @@ TEST_F(NegativeDescriptorHeap, EmbeddedSamplerArray) {
40664060

40674061
// reservedRangeOffset check
40684062
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
4069-
bind_info.heapRange = {buffer.Address(), bdsize};
4063+
bind_info.heapRange = buffer.AddressRange();
40704064
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRangeWithEmbedded;
40714065
m_command_buffer.Begin();
40724066
vk::CmdBindSamplerHeapEXT(m_command_buffer, &bind_info);
@@ -4671,8 +4665,7 @@ TEST_F(NegativeDescriptorHeap, PushDataRange) {
46714665
pipe.CreateComputePipeline(false);
46724666

46734667
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
4674-
bind_resource_info.heapRange.address = descriptor_heap.Address();
4675-
bind_resource_info.heapRange.size = resource_heap_size;
4668+
bind_resource_info.heapRange = descriptor_heap.AddressRange();
46764669
bind_resource_info.reservedRangeOffset = resource_heap_size_app;
46774670
bind_resource_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
46784671

@@ -5824,8 +5817,7 @@ TEST_F(NegativeDescriptorHeap, SecondaryCmdBufferResourceHeapUnbound) {
58245817
vkt::CommandBuffer secondary(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
58255818

58265819
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
5827-
bind_resource_info.heapRange.address = resource_heap_.Address();
5828-
bind_resource_info.heapRange.size = resource_heap_.CreateInfo().size;
5820+
bind_resource_info.heapRange = resource_heap_.AddressRange();
58295821
bind_resource_info.reservedRangeOffset = resource_heap_.CreateInfo().size - heap_props.minResourceHeapReservedRange;
58305822
bind_resource_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
58315823

@@ -5910,7 +5902,7 @@ TEST_F(NegativeDescriptorHeap, SecondaryCmdBufferSamplerHeapUnbound) {
59105902
vk::WriteSamplerDescriptorsEXT(*m_device, 1u, &sampler_info, &sampler_host);
59115903

59125904
VkBindHeapInfoEXT sampler_bind_info = vku::InitStructHelper();
5913-
sampler_bind_info.heapRange = {sampler_heap.Address(), sampler_heap_size};
5905+
sampler_bind_info.heapRange = sampler_heap.AddressRange();
59145906
sampler_bind_info.reservedRangeOffset = 0;
59155907
sampler_bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
59165908

@@ -5957,7 +5949,7 @@ TEST_F(NegativeDescriptorHeap, SecondaryCmdBufferSamplerHeapUnbound) {
59575949
vkt::CommandBuffer secondary(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
59585950

59595951
VkBindHeapInfoEXT resource_bind_info = vku::InitStructHelper();
5960-
resource_bind_info.heapRange = {resource_heap_.Address(), resource_heap_.CreateInfo().size};
5952+
resource_bind_info.heapRange = resource_heap_.AddressRange();
59615953
resource_bind_info.reservedRangeOffset = resource_heap_.CreateInfo().size - heap_props.minResourceHeapReservedRange;
59625954
resource_bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
59635955

tests/unit/descriptor_heap_positive.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,7 @@ TEST_F(PositiveDescriptorHeap, ResetCommandBufferOverlappingResource) {
381381
vkt::CommandBuffer cmd_buffer2(*m_device, command_pool);
382382

383383
VkBindHeapInfoEXT bind_info1 = vku::InitStructHelper();
384-
bind_info1.heapRange.address = resource_heap_.Address();
385-
bind_info1.heapRange.size = resource_heap_.CreateInfo().size;
384+
bind_info1.heapRange = resource_heap_.AddressRange();
386385
bind_info1.reservedRangeOffset = 0;
387386
bind_info1.reservedRangeSize = heap_props.minResourceHeapReservedRange;
388387

@@ -635,7 +634,7 @@ TEST_F(PositiveDescriptorHeap, SamplerInheritance) {
635634
vkt::CommandBuffer secondary(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
636635

637636
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
638-
bind_info.heapRange = {sampler_heap_.Address(), sampler_heap_.CreateInfo().size};
637+
bind_info.heapRange = sampler_heap_.AddressRange();
639638
bind_info.reservedRangeOffset = 0;
640639
bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
641640

@@ -664,7 +663,7 @@ TEST_F(PositiveDescriptorHeap, ResourceInheritance) {
664663
CreateResourceHeap(heap_props.bufferDescriptorSize * 2);
665664

666665
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
667-
bind_info.heapRange = {resource_heap_.Address(), resource_heap_.CreateInfo().size};
666+
bind_info.heapRange = resource_heap_.AddressRange();
668667
bind_info.reservedRangeOffset = 0;
669668
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
670669

@@ -744,7 +743,7 @@ TEST_F(PositiveDescriptorHeap, Sampler) {
744743
vk::WriteSamplerDescriptorsEXT(*m_device, 1u, &sampler_info, &sampler_host);
745744

746745
VkBindHeapInfoEXT sampler_bind_info = vku::InitStructHelper();
747-
sampler_bind_info.heapRange = {sampler_heap.Address(), sampler_heap_size};
746+
sampler_bind_info.heapRange = sampler_heap.AddressRange();
748747
sampler_bind_info.reservedRangeOffset = 0;
749748
sampler_bind_info.reservedRangeSize = heap_props.minSamplerHeapReservedRange;
750749

@@ -1959,7 +1958,7 @@ TEST_F(PositiveDescriptorHeap, NestedResourceInheritance) {
19591958
vkt::CommandBuffer secondary2(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
19601959

19611960
VkBindHeapInfoEXT bind_info = vku::InitStructHelper();
1962-
bind_info.heapRange = {resource_heap_.Address(), heap_size};
1961+
bind_info.heapRange = resource_heap_.AddressRange();
19631962
bind_info.reservedRangeOffset = 0;
19641963
bind_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
19651964

@@ -3213,8 +3212,7 @@ TEST_F(PositiveDescriptorHeap, DISABLED_SecondaryCmdBufferCompute) {
32133212
vkt::CommandBuffer secondary(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
32143213

32153214
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
3216-
bind_resource_info.heapRange.address = resource_heap_.Address();
3217-
bind_resource_info.heapRange.size = resource_heap_.CreateInfo().size;
3215+
bind_resource_info.heapRange = resource_heap_.AddressRange();
32183216
bind_resource_info.reservedRangeOffset = resource_heap_.CreateInfo().size - heap_props.minResourceHeapReservedRange;
32193217
bind_resource_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
32203218

@@ -3308,8 +3306,7 @@ TEST_F(PositiveDescriptorHeap, SecondaryCmdBufferGraphics) {
33083306
vkt::CommandBuffer secondary(*m_device, m_command_pool, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
33093307

33103308
VkBindHeapInfoEXT bind_resource_info = vku::InitStructHelper();
3311-
bind_resource_info.heapRange.address = resource_heap_.Address();
3312-
bind_resource_info.heapRange.size = resource_heap_.CreateInfo().size;
3309+
bind_resource_info.heapRange = resource_heap_.AddressRange();
33133310
bind_resource_info.reservedRangeOffset = resource_heap_.CreateInfo().size - heap_props.minResourceHeapReservedRange;
33143311
bind_resource_info.reservedRangeSize = heap_props.minResourceHeapReservedRange;
33153312

0 commit comments

Comments
 (0)