summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_entrypoints_gen.py
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2018-03-12 08:27:04 +0100
committerIago Toral Quiroga <[email protected]>2018-03-14 08:09:15 +0100
commit1a0aba7216e54e117df744c252f152ff3eab6441 (patch)
tree62373623049199d24eacfd6281536b5ba5e2632d /src/intel/vulkan/anv_entrypoints_gen.py
parenta631575ff4e415271d7b4b5574d64fc5d2e5586e (diff)
anv/entrypoints: VkGetDeviceProcAddr returns NULL for core instance commands
af5f2322d0c64 addressed this for extension commands, but the spec mandates this behavior also for core API commands. From the Vulkan spec, Table 2. vkGetDeviceProcAddr behavior: device pname return ---------------------------------------------------------- (..) device core device-level command fp (...) See that it specifically states "device-level". Since the vk.xml file doesn't state if core commands are instance or device level, we identify device level commands as the ones that take a VkDevice, VkQueue or VkCommandBuffer as their first parameter. Fixes test failures in new work-in-progress CTS tests. Also see the public issue: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/2323 v2: - Include reference to github issue (Emil) - Rebased on top of Vulkan 1.1 changes. v3: - Remove the not in the condition and switch the then/else cases (Jason) Reviewed-by: Emil Velikov <[email protected]> (v1) Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_entrypoints_gen.py')
-rw-r--r--src/intel/vulkan/anv_entrypoints_gen.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index 72110347826..d603ac1b20b 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -279,7 +279,11 @@ anv_entrypoint_is_enabled(int index, uint32_t core_version,
case ${e.num}:
/* ${e.name} */
% if e.core_version:
- return ${e.core_version.c_vk_version()} <= core_version;
+ % if e.is_device_entrypoint():
+ return ${e.core_version.c_vk_version()} <= core_version;
+ % else:
+ return !device && ${e.core_version.c_vk_version()} <= core_version;
+ % endif
% elif e.extensions:
% for ext in e.extensions:
% if ext.type == 'instance':