mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
External memory updates (#1676)
* Vulkan: Fix descriptor sets Use descriptor set arrays when programming arrays for compute shader. Change-Id: Idabab775a256a223660eb7a850e26f290453659e * Vulkan: Fix queue propertyies Transfer bit for queue family is not required to be reported by the implementation, it is implicit for compute. Change-Id: I7424b00e25e35145433dd74b0b4dfe7eeeaf98c8 * Vulkan: Allow implementation to choose dedicated memory Dedicated vs non-dedicated memory must be queried by the app. Implementations are not required to support exportable non-dedicated memory. Change-Id: Idbc46ace1be20f61d1b58b34756f6d79a7745911 * Fix formatting Auto-generated formatting fix * Fix bug in dedicated memory. * Add check for if OpenCL assumes linear tiling Change-Id: Idd2e24d9d69e1fbc3ccb4a279067533104185332 * Changed macro name to reflect spec CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_HANDLE_TYPES_KHR to CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR Also changed some functions to not use the KHR variants. --------- Co-authored-by: Joshua Kelly <joshkell@qti.qualcomm.com>
This commit is contained in:
committed by
GitHub
parent
c511ac62b0
commit
15b54aa0bd
@@ -126,8 +126,11 @@ int run_test_with_two_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
std::vector<char> vkBufferShader = readFile("buffer.spv");
|
||||
|
||||
VulkanShaderModule vkBufferShaderModule(vkDevice, vkBufferShader);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList(
|
||||
MAX_BUFFERS + 1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList;
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
0, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1);
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, MAX_BUFFERS);
|
||||
VulkanDescriptorSetLayout vkDescriptorSetLayout(
|
||||
vkDevice, vkDescriptorSetLayoutBindingList);
|
||||
VulkanPipelineLayout vkPipelineLayout(vkDevice, vkDescriptorSetLayout);
|
||||
@@ -189,9 +192,9 @@ int run_test_with_two_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
|
||||
for (size_t bIdx = 0; bIdx < numBuffers; bIdx++)
|
||||
{
|
||||
vkBufferListDeviceMemory.push_back(
|
||||
new VulkanDeviceMemory(vkDevice, bufferSize, memoryType,
|
||||
vkExternalMemoryHandleType));
|
||||
vkBufferListDeviceMemory.push_back(new VulkanDeviceMemory(
|
||||
vkDevice, vkBufferList[bIdx], memoryType,
|
||||
vkExternalMemoryHandleType));
|
||||
externalMemory.push_back(new clExternalMemory(
|
||||
vkBufferListDeviceMemory[bIdx], vkExternalMemoryHandleType,
|
||||
0, bufferSize, context, deviceId));
|
||||
@@ -210,8 +213,8 @@ int run_test_with_two_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
vkBufferListDeviceMemory[bIdx]->bindBuffer(vkBufferList[bIdx],
|
||||
0);
|
||||
buffers[bIdx] = externalMemory[bIdx]->getExternalMemoryBuffer();
|
||||
vkDescriptorSet.update((uint32_t)bIdx + 1, vkBufferList[bIdx]);
|
||||
}
|
||||
vkDescriptorSet.updateArray(1, numBuffers, vkBufferList);
|
||||
vkCommandBuffer.begin();
|
||||
vkCommandBuffer.bindPipeline(vkComputePipeline);
|
||||
vkCommandBuffer.bindDescriptorSets(
|
||||
@@ -453,8 +456,11 @@ int run_test_with_one_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
|
||||
std::vector<char> vkBufferShader = readFile("buffer.spv");
|
||||
VulkanShaderModule vkBufferShaderModule(vkDevice, vkBufferShader);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList(
|
||||
MAX_BUFFERS + 1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList;
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
0, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1);
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, MAX_BUFFERS);
|
||||
VulkanDescriptorSetLayout vkDescriptorSetLayout(
|
||||
vkDevice, vkDescriptorSetLayoutBindingList);
|
||||
VulkanPipelineLayout vkPipelineLayout(vkDevice, vkDescriptorSetLayout);
|
||||
@@ -517,9 +523,9 @@ int run_test_with_one_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
|
||||
for (size_t bIdx = 0; bIdx < numBuffers; bIdx++)
|
||||
{
|
||||
vkBufferListDeviceMemory.push_back(
|
||||
new VulkanDeviceMemory(vkDevice, bufferSize, memoryType,
|
||||
vkExternalMemoryHandleType));
|
||||
vkBufferListDeviceMemory.push_back(new VulkanDeviceMemory(
|
||||
vkDevice, vkBufferList[bIdx], memoryType,
|
||||
vkExternalMemoryHandleType));
|
||||
externalMemory.push_back(new clExternalMemory(
|
||||
vkBufferListDeviceMemory[bIdx], vkExternalMemoryHandleType,
|
||||
0, bufferSize, context, deviceId));
|
||||
@@ -538,8 +544,9 @@ int run_test_with_one_queue(cl_context &context, cl_command_queue &cmd_queue1,
|
||||
vkBufferListDeviceMemory[bIdx]->bindBuffer(vkBufferList[bIdx],
|
||||
0);
|
||||
buffers[bIdx] = externalMemory[bIdx]->getExternalMemoryBuffer();
|
||||
vkDescriptorSet.update((uint32_t)bIdx + 1, vkBufferList[bIdx]);
|
||||
}
|
||||
vkDescriptorSet.updateArray(1, vkBufferList.size(), vkBufferList);
|
||||
|
||||
vkCommandBuffer.begin();
|
||||
vkCommandBuffer.bindPipeline(vkComputePipeline);
|
||||
vkCommandBuffer.bindDescriptorSets(
|
||||
@@ -754,8 +761,11 @@ int run_test_with_multi_import_same_ctx(
|
||||
std::vector<char> vkBufferShader = readFile("buffer.spv");
|
||||
|
||||
VulkanShaderModule vkBufferShaderModule(vkDevice, vkBufferShader);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList(
|
||||
MAX_BUFFERS + 1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER);
|
||||
VulkanDescriptorSetLayoutBindingList vkDescriptorSetLayoutBindingList;
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
0, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1);
|
||||
vkDescriptorSetLayoutBindingList.addBinding(
|
||||
1, VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER, MAX_BUFFERS);
|
||||
VulkanDescriptorSetLayout vkDescriptorSetLayout(
|
||||
vkDevice, vkDescriptorSetLayoutBindingList);
|
||||
VulkanPipelineLayout vkPipelineLayout(vkDevice, vkDescriptorSetLayout);
|
||||
@@ -836,7 +846,7 @@ int run_test_with_multi_import_same_ctx(
|
||||
if (withOffset == 0)
|
||||
{
|
||||
vkBufferListDeviceMemory.push_back(
|
||||
new VulkanDeviceMemory(vkDevice, pBufferSize,
|
||||
new VulkanDeviceMemory(vkDevice, vkBufferList[bIdx],
|
||||
memoryType,
|
||||
vkExternalMemoryHandleType));
|
||||
}
|
||||
@@ -880,9 +890,8 @@ int run_test_with_multi_import_same_ctx(
|
||||
externalMemory[bIdx][cl_bIdx]
|
||||
->getExternalMemoryBuffer();
|
||||
}
|
||||
vkDescriptorSet.update((uint32_t)bIdx + 1,
|
||||
vkBufferList[bIdx]);
|
||||
}
|
||||
vkDescriptorSet.updateArray(1, numBuffers, vkBufferList);
|
||||
vkCommandBuffer.begin();
|
||||
vkCommandBuffer.bindPipeline(vkComputePipeline);
|
||||
vkCommandBuffer.bindDescriptorSets(
|
||||
|
||||
Reference in New Issue
Block a user