diff options
Diffstat (limited to 'src/vulkan')
-rw-r--r-- | src/vulkan/anv_device.c | 2 | ||||
-rw-r--r-- | src/vulkan/anv_entrypoints_gen.py | 15 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/vulkan/anv_device.c b/src/vulkan/anv_device.c index 6cdfd4e5c46..0643944fa23 100644 --- a/src/vulkan/anv_device.c +++ b/src/vulkan/anv_device.c @@ -637,7 +637,7 @@ VkResult anv_CreateDevice( return vk_error(VK_ERROR_EXTENSION_NOT_PRESENT); } - anv_set_dispatch_gen(physical_device->info->gen); + anv_set_dispatch_devinfo(physical_device->info); device = anv_instance_alloc(instance, sizeof(*device), 8, VK_SYSTEM_ALLOC_TYPE_API_OBJECT); diff --git a/src/vulkan/anv_entrypoints_gen.py b/src/vulkan/anv_entrypoints_gen.py index 0fa677bbe02..bb250602b25 100644 --- a/src/vulkan/anv_entrypoints_gen.py +++ b/src/vulkan/anv_entrypoints_gen.py @@ -91,7 +91,7 @@ if opt_header: print " };\n" print "};\n" - print "void anv_set_dispatch_gen(uint32_t gen);\n" + print "void anv_set_dispatch_devinfo(const struct brw_device_info *info);\n" for type, name, args, num, h in entrypoints: print "%s anv_%s%s;" % (type, name, args) @@ -193,12 +193,12 @@ determine_validate(void) enable_validate = atoi(s); } -static uint32_t dispatch_gen; +static const struct brw_device_info *dispatch_devinfo; void -anv_set_dispatch_gen(uint32_t gen) +anv_set_dispatch_devinfo(const struct brw_device_info *devinfo) { - dispatch_gen = gen; + dispatch_devinfo = devinfo; } void * __attribute__ ((noinline)) @@ -207,7 +207,12 @@ anv_resolve_entrypoint(uint32_t index) if (enable_validate && validate_layer.entrypoints[index]) return validate_layer.entrypoints[index]; - switch (dispatch_gen) { + if (dispatch_devinfo == NULL) { + assert(anv_layer.entrypoints[index]); + return anv_layer.entrypoints[index]; + } + + switch (dispatch_devinfo->gen) { case 8: if (gen8_layer.entrypoints[index]) return gen8_layer.entrypoints[index]; |