aboutsummaryrefslogtreecommitdiff
path: root/icd/generated/mock_icd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'icd/generated/mock_icd.cpp')
-rw-r--r--icd/generated/mock_icd.cpp58
1 files changed, 45 insertions, 13 deletions
diff --git a/icd/generated/mock_icd.cpp b/icd/generated/mock_icd.cpp
index 8cb67132..e9c4019e 100644
--- a/icd/generated/mock_icd.cpp
+++ b/icd/generated/mock_icd.cpp
@@ -40,7 +40,12 @@ static unordered_map<VkDeviceMemory, std::vector<void*>> mapped_memory_map;
static unordered_map<VkDeviceMemory, VkDeviceSize> allocated_memory_size_map;
static unordered_map<VkDevice, unordered_map<uint32_t, unordered_map<uint32_t, VkQueue>>> queue_map;
-static unordered_map<VkDevice, unordered_map<VkBuffer, VkBufferCreateInfo>> buffer_map;
+static VkDeviceAddress current_available_address = 0x10000000;
+struct BufferState {
+ VkDeviceSize size;
+ VkDeviceAddress address;
+};
+static unordered_map<VkDevice, unordered_map<VkBuffer, BufferState>> buffer_map;
static unordered_map<VkDevice, unordered_map<VkImage, VkDeviceSize>> image_memory_size_map;
static unordered_map<VkCommandPool, std::vector<VkCommandBuffer>> command_pool_buffer_map;
@@ -882,7 +887,16 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer(
{
unique_lock_t lock(global_lock);
*pBuffer = (VkBuffer)global_unique_handle++;
- buffer_map[device][*pBuffer] = *pCreateInfo;
+ buffer_map[device][*pBuffer] = {
+ pCreateInfo->size,
+ current_available_address
+ };
+ current_available_address += pCreateInfo->size;
+ // Always align to next 64-bit pointer
+ const uint64_t alignment = current_available_address % 64;
+ if (alignment != 0) {
+ current_available_address += (64 - alignment);
+ }
return VK_SUCCESS;
}
@@ -2126,8 +2140,15 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddress(
VkDevice device,
const VkBufferDeviceAddressInfo* pInfo)
{
-//Not a CREATE or DESTROY function
- return VK_SUCCESS;
+ VkDeviceAddress address = 0;
+ auto d_iter = buffer_map.find(device);
+ if (d_iter != buffer_map.end()) {
+ auto iter = d_iter->second.find(pInfo->buffer);
+ if (iter != d_iter->second.end()) {
+ address = iter->second.address;
+ }
+ }
+ return address;
}
static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddress(
@@ -3050,6 +3071,12 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR(
rt_pipeline_props->shaderGroupHandleCaptureReplaySize = 32;
}
+ auto *rt_pipeline_nv_props = lvl_find_mod_in_chain<VkPhysicalDeviceRayTracingPropertiesNV>(pProperties->pNext);
+ if (rt_pipeline_nv_props) {
+ rt_pipeline_nv_props->shaderGroupHandleSize = 32;
+ rt_pipeline_nv_props->shaderGroupBaseAlignment = 64;
+ }
+
auto *texel_buffer_props = lvl_find_mod_in_chain<VkPhysicalDeviceTexelBufferAlignmentProperties>(pProperties->pNext);
if (texel_buffer_props) {
texel_buffer_props->storageTexelBufferOffsetSingleTexelAlignment = VK_TRUE;
@@ -3759,8 +3786,7 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
VkDevice device,
const VkBufferDeviceAddressInfo* pInfo)
{
-//Not a CREATE or DESTROY function
- return VK_SUCCESS;
+ return GetBufferDeviceAddress(device, pInfo);
}
static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
@@ -4781,7 +4807,10 @@ static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
VkMemoryRequirements2KHR* pMemoryRequirements)
{
-//Not a CREATE or DESTROY function
+ // arbitrary
+ pMemoryRequirements->memoryRequirements.size = 4096;
+ pMemoryRequirements->memoryRequirements.alignment = 1;
+ pMemoryRequirements->memoryRequirements.memoryTypeBits = 0xFFFF;
}
static VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
@@ -5163,8 +5192,7 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
VkDevice device,
const VkBufferDeviceAddressInfo* pInfo)
{
-//Not a CREATE or DESTROY function
- return VK_SUCCESS;
+ return GetBufferDeviceAddress(device, pInfo);
}
@@ -5521,7 +5549,8 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT(
VkDescriptorSetLayout layout,
VkDeviceSize* pLayoutSizeInBytes)
{
-//Not a CREATE or DESTROY function
+ // Need to give something non-zero
+ *pLayoutSizeInBytes = 4;
}
static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutBindingOffsetEXT(
@@ -6618,8 +6647,8 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddre
VkDevice device,
const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
{
-//Not a CREATE or DESTROY function
- return VK_SUCCESS;
+ // arbitrary - need to be aligned to 256 bytes
+ return 0x262144;
}
static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
@@ -6648,7 +6677,10 @@ static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
const uint32_t* pMaxPrimitiveCounts,
VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
{
-//Not a CREATE or DESTROY function
+ // arbitrary
+ pSizeInfo->accelerationStructureSize = 4;
+ pSizeInfo->updateScratchSize = 4;
+ pSizeInfo->buildScratchSize = 4;
}