anv: do not advertise AHW support if extension not enabled
Fixes following failing vk-gl-cts cases on Linux desktop:
dEQP-VK.api.external.memory.android_hardware_buffer.suballocated.buffer.info
dEQP-VK.api.external.memory.android_hardware_buffer.suballocated.image.info
dEQP-VK.api.external.memory.android_hardware_buffer.dedicated.image.info
dEQP-VK.api.external.memory.android_hardware_buffer.dedicated.buffer.info
Fixes: 517103abf1
"anv/android: add ahardwarebuffer external memory properties"
Reported-by: Juan A. Suarez <jasuarez@igalia.com>
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
This commit is contained in:
@@ -1044,7 +1044,10 @@ VkResult anv_GetPhysicalDeviceImageFormatProperties2(
|
|||||||
if (result != VK_SUCCESS)
|
if (result != VK_SUCCESS)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (android_usage) {
|
bool ahw_supported =
|
||||||
|
physical_device->supported_extensions.ANDROID_external_memory_android_hardware_buffer;
|
||||||
|
|
||||||
|
if (ahw_supported && android_usage) {
|
||||||
android_usage->androidHardwareBufferUsage =
|
android_usage->androidHardwareBufferUsage =
|
||||||
anv_ahw_usage_from_vk_usage(base_info->flags,
|
anv_ahw_usage_from_vk_usage(base_info->flags,
|
||||||
base_info->usage);
|
base_info->usage);
|
||||||
@@ -1067,9 +1070,11 @@ VkResult anv_GetPhysicalDeviceImageFormatProperties2(
|
|||||||
external_props->externalMemoryProperties = prime_fd_props;
|
external_props->externalMemoryProperties = prime_fd_props;
|
||||||
break;
|
break;
|
||||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID:
|
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID:
|
||||||
if (external_props)
|
if (ahw_supported && external_props) {
|
||||||
external_props->externalMemoryProperties = android_image_props;
|
external_props->externalMemoryProperties = android_image_props;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
/* fallthrough if ahw not supported */
|
||||||
default:
|
default:
|
||||||
/* From the Vulkan 1.0.42 spec:
|
/* From the Vulkan 1.0.42 spec:
|
||||||
*
|
*
|
||||||
@@ -1147,15 +1152,19 @@ void anv_GetPhysicalDeviceExternalBufferProperties(
|
|||||||
if (pExternalBufferInfo->flags)
|
if (pExternalBufferInfo->flags)
|
||||||
goto unsupported;
|
goto unsupported;
|
||||||
|
|
||||||
|
ANV_FROM_HANDLE(anv_physical_device, physical_device, physicalDevice);
|
||||||
|
|
||||||
switch (pExternalBufferInfo->handleType) {
|
switch (pExternalBufferInfo->handleType) {
|
||||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
|
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
|
||||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
|
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
|
||||||
pExternalBufferProperties->externalMemoryProperties = prime_fd_props;
|
pExternalBufferProperties->externalMemoryProperties = prime_fd_props;
|
||||||
return;
|
return;
|
||||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID:
|
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID:
|
||||||
pExternalBufferProperties->externalMemoryProperties =
|
if (physical_device->supported_extensions.ANDROID_external_memory_android_hardware_buffer) {
|
||||||
android_buffer_props;
|
pExternalBufferProperties->externalMemoryProperties = android_buffer_props;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
/* fallthrough if ahw not supported */
|
||||||
default:
|
default:
|
||||||
goto unsupported;
|
goto unsupported;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user