Skip to content

Commit 348909c

Browse files
Ekzuzygitsgh
authored andcommitted
[VK] Add support for new functions for querying buffer memory requirements
1 parent cbedc72 commit 348909c

File tree

2 files changed

+43
-8
lines changed

2 files changed

+43
-8
lines changed

Vulkan/codegen/generator_vulkan_official.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3392,14 +3392,14 @@
33923392
arg3=ArgDef(name='pCompatibility', type='VkAccelerationStructureCompatibilityKHR*')
33933393
)
33943394

3395-
Function(name='vkGetDeviceBufferMemoryRequirements', enabled=False, type=FuncType.PARAM,
3395+
Function(name='vkGetDeviceBufferMemoryRequirements', enabled=False, type=FuncType.PARAM, recExecWrap=True,
33963396
retV=RetDef(type='void'),
33973397
arg1=ArgDef(name='device', type='VkDevice'),
33983398
arg2=ArgDef(name='pInfo', type='const VkDeviceBufferMemoryRequirements*'),
33993399
arg3=ArgDef(name='pMemoryRequirements', type='VkMemoryRequirements2*')
34003400
)
34013401

3402-
Function(name='vkGetDeviceBufferMemoryRequirementsKHR', enabled=False, type=FuncType.PARAM,
3402+
Function(name='vkGetDeviceBufferMemoryRequirementsKHR', enabled=False, type=FuncType.PARAM, recExecWrap=True,
34033403
retV=RetDef(type='void'),
34043404
arg1=ArgDef(name='device', type='VkDevice'),
34053405
arg2=ArgDef(name='pInfo', type='const VkDeviceBufferMemoryRequirements*'),

Vulkan/interceptor/include/vulkanExecWrap.h

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,10 +1028,9 @@ VkResult recExecWrap_vkCreateImage(VkDevice device,
10281028
pAllocator, pImage);
10291029
}
10301030

1031-
VkResult recExecWrap_vkCreateBuffer(VkDevice device,
1032-
const VkBufferCreateInfo* pCreateInfo,
1033-
const VkAllocationCallbacks* pAllocator,
1034-
VkBuffer* pBuffer) {
1031+
namespace {
1032+
1033+
VkBufferCreateInfo OverwriteBufferCreateInfo(const VkBufferCreateInfo* pCreateInfo) {
10351034
// Global changes - propagate to recorded streams
10361035
if (!CGitsPluginVulkan::RecorderWrapper().IsPaused()) {
10371036
VkBufferCreateInfo* originalCreateInfo = const_cast<VkBufferCreateInfo*>(pCreateInfo);
@@ -1062,11 +1061,22 @@ VkResult recExecWrap_vkCreateBuffer(VkDevice device,
10621061
.vulkan.recorder.crossPlatformStateRestoration.buffers)) {
10631062
localCreateInfo.usage |= VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
10641063
}
1065-
return CGitsPluginVulkan::RecorderWrapper().Drivers().vkCreateBuffer(device, &localCreateInfo,
1066-
pAllocator, pBuffer);
1064+
1065+
return localCreateInfo;
10671066
}
10681067
}
10691068

1069+
} // namespace
1070+
1071+
VkResult recExecWrap_vkCreateBuffer(VkDevice device,
1072+
const VkBufferCreateInfo* pCreateInfo,
1073+
const VkAllocationCallbacks* pAllocator,
1074+
VkBuffer* pBuffer) {
1075+
auto localCreateInfo = OverwriteBufferCreateInfo(pCreateInfo);
1076+
return CGitsPluginVulkan::RecorderWrapper().Drivers().vkCreateBuffer(device, &localCreateInfo,
1077+
pAllocator, pBuffer);
1078+
}
1079+
10701080
VkResult recExecWrap_vkCreateSwapchainKHR(VkDevice device,
10711081
const VkSwapchainCreateInfoKHR* pCreateInfo,
10721082
const VkAllocationCallbacks* pAllocator,
@@ -1287,6 +1297,31 @@ void recExecWrap_vkGetBufferMemoryRequirements2KHR(VkDevice device,
12871297
ProcessBufferMemoryRequirements(&pMemoryRequirements->memoryRequirements);
12881298
}
12891299

1300+
void recExecWrap_vkGetDeviceBufferMemoryRequirements(VkDevice device,
1301+
const VkDeviceBufferMemoryRequirements* pInfo,
1302+
VkMemoryRequirements2* pMemoryRequirements) {
1303+
auto memoryReqsInfo = *pInfo;
1304+
auto createInfo = OverwriteBufferCreateInfo(memoryReqsInfo.pCreateInfo);
1305+
memoryReqsInfo.pCreateInfo = &createInfo;
1306+
1307+
CGitsPluginVulkan::RecorderWrapper().Drivers().vkGetDeviceBufferMemoryRequirements(
1308+
device, &memoryReqsInfo, pMemoryRequirements);
1309+
ProcessBufferMemoryRequirements(&pMemoryRequirements->memoryRequirements);
1310+
}
1311+
1312+
void recExecWrap_vkGetDeviceBufferMemoryRequirementsKHR(
1313+
VkDevice device,
1314+
const VkDeviceBufferMemoryRequirements* pInfo,
1315+
VkMemoryRequirements2* pMemoryRequirements) {
1316+
auto memoryReqsInfo = *pInfo;
1317+
auto createInfo = OverwriteBufferCreateInfo(memoryReqsInfo.pCreateInfo);
1318+
memoryReqsInfo.pCreateInfo = &createInfo;
1319+
1320+
CGitsPluginVulkan::RecorderWrapper().Drivers().vkGetDeviceBufferMemoryRequirementsKHR(
1321+
device, &memoryReqsInfo, pMemoryRequirements);
1322+
ProcessBufferMemoryRequirements(&pMemoryRequirements->memoryRequirements);
1323+
}
1324+
12901325
void recExecWrap_vkGetAccelerationStructureBuildSizesKHR(
12911326
VkDevice device,
12921327
VkAccelerationStructureBuildTypeKHR buildType,

0 commit comments

Comments
 (0)