Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions icd/generated/function_definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -2571,8 +2571,13 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineBinariesKHR(VkDevice device,
const VkAllocationCallbacks* pAllocator,
VkPipelineBinaryHandlesInfoKHR* pBinaries) {
unique_lock_t lock(global_lock);
for (uint32_t i = 0; i < pBinaries->pipelineBinaryCount; ++i) {
pBinaries->pPipelineBinaries[i] = (VkPipelineBinaryKHR)global_unique_handle++;
if (pBinaries->pPipelineBinaries != nullptr) {
for (uint32_t i = 0; i < pBinaries->pipelineBinaryCount; ++i) {
pBinaries->pPipelineBinaries[i] = (VkPipelineBinaryKHR)global_unique_handle++;
}
} else {
// In this case, we need to return a return count, let's set it to 3
pBinaries->pipelineBinaryCount = 3;
}
return VK_SUCCESS;
}
Expand All @@ -2582,13 +2587,23 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPipelineBinaryKHR(VkDevice device, VkPi
}
static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineKeyKHR(VkDevice device, const VkPipelineCreateInfoKHR* pPipelineCreateInfo,
VkPipelineBinaryKeyKHR* pPipelineKey) {
// Not a CREATE or DESTROY function
if (pPipelineKey != nullptr) {
pPipelineKey->keySize = 16;
std::memset(pPipelineKey->key, 0x12, pPipelineKey->keySize);
}
return VK_SUCCESS;
}
static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineBinaryDataKHR(VkDevice device, const VkPipelineBinaryDataInfoKHR* pInfo,
VkPipelineBinaryKeyKHR* pPipelineBinaryKey,
size_t* pPipelineBinaryDataSize, void* pPipelineBinaryData) {
// Not a CREATE or DESTROY function
static uint32_t fake_size = 64;
if (pPipelineBinaryDataSize != nullptr) {
if (pPipelineBinaryData == nullptr) {
*pPipelineBinaryDataSize = fake_size;
} else {
std::memset(pPipelineBinaryData, 0xABCD, fake_size);
}
}
return VK_SUCCESS;
}
static VKAPI_ATTR VkResult VKAPI_CALL ReleaseCapturedPipelineDataKHR(VkDevice device,
Expand Down
38 changes: 36 additions & 2 deletions scripts/generators/mock_icd_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -1191,8 +1191,39 @@
''',
'vkCreatePipelineBinariesKHR': '''
unique_lock_t lock(global_lock);
for (uint32_t i = 0; i < pBinaries->pipelineBinaryCount; ++i) {
pBinaries->pPipelineBinaries[i] = (VkPipelineBinaryKHR)global_unique_handle++;
if (pBinaries->pPipelineBinaries != nullptr)
{
for (uint32_t i = 0; i < pBinaries->pipelineBinaryCount; ++i) {
pBinaries->pPipelineBinaries[i] = (VkPipelineBinaryKHR)global_unique_handle++;
}
}
else
{
// In this case, we need to return a return count, let's set it to 3
pBinaries->pipelineBinaryCount = 3;
}
return VK_SUCCESS;
''',
'vkGetPipelineKeyKHR': '''
if (pPipelineKey != nullptr)
{
pPipelineKey->keySize = 16;
std::memset(pPipelineKey->key, 0x12, pPipelineKey->keySize);
}
return VK_SUCCESS;
''',
'vkGetPipelineBinaryDataKHR': '''
static uint32_t fake_size = 64;
if (pPipelineBinaryDataSize != nullptr)
{
if (pPipelineBinaryData == nullptr)
{
*pPipelineBinaryDataSize = fake_size;
}
else
{
std::memset(pPipelineBinaryData, 0xABCD, fake_size);
}
}
return VK_SUCCESS;
'''
Expand Down Expand Up @@ -1291,7 +1322,10 @@ def generate_function_definitions(self, out):
'vkEnumerateInstanceExtensionProperties',
'vkEnumerateDeviceLayerProperties',
'vkEnumerateDeviceExtensionProperties',
'vkGetPipelineKeyKHR',
'vkGetPipelineBinaryDataKHR',
]

current_protect = None
for name, cmd in self.vk.commands.items():
if cmd.protect != current_protect:
Expand Down
Loading