瀏覽代碼

anv: Properly NULL for GetInstanceProcAddr with a null instance

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
tags/18.0-branchpoint
Jason Ekstrand 7 年之前
父節點
當前提交
a372b9247d
共有 1 個檔案被更改,包括 23 行新增1 行删除
  1. 23
    1
      src/intel/vulkan/anv_device.c

+ 23
- 1
src/intel/vulkan/anv_device.c 查看文件

@@ -1063,9 +1063,31 @@ void anv_GetPhysicalDeviceMemoryProperties2KHR(
}

PFN_vkVoidFunction anv_GetInstanceProcAddr(
VkInstance instance,
VkInstance _instance,
const char* pName)
{
ANV_FROM_HANDLE(anv_instance, instance, _instance);

/* The Vulkan 1.0 spec for vkGetInstanceProcAddr has a table of exactly
* when we have to return valid function pointers, NULL, or it's left
* undefined. See the table for exact details.
*/
if (pName == NULL)
return NULL;

#define LOOKUP_ANV_ENTRYPOINT(entrypoint) \
if (strcmp(pName, "vk" #entrypoint) == 0) \
return (PFN_vkVoidFunction)anv_##entrypoint

LOOKUP_ANV_ENTRYPOINT(EnumerateInstanceExtensionProperties);
LOOKUP_ANV_ENTRYPOINT(EnumerateInstanceLayerProperties);
LOOKUP_ANV_ENTRYPOINT(CreateInstance);

#undef LOOKUP_ANV_ENTRYPOINT

if (instance == NULL)
return NULL;

return anv_lookup_entrypoint(NULL, pName);
}


Loading…
取消
儲存