anv/entrypoints: dispatches to VkQueue are device-level
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 12 Mar 2018 07:29:57 +0000 (08:29 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Wed, 14 Mar 2018 07:09:15 +0000 (08:09 +0100)
v2:
  - Add trampoline functions (Jason)
  - Add an assertion for unhandled trampoline cases

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_entrypoints_gen.py

index 485c6cfe8d72ca7f88232e6d1a7b8fb46498635a..72110347826fcd6a7e9f7642de95fdfc2d14fb51 100644 (file)
@@ -233,9 +233,14 @@ string_map_lookup(const char *str)
     % if e.params[0].type == 'VkDevice':
       ANV_FROM_HANDLE(anv_device, anv_device, ${e.params[0].name});
       return anv_device->dispatch.${e.name}(${e.call_params()});
-    % else:
+    % elif e.params[0].type == 'VkCommandBuffer':
       ANV_FROM_HANDLE(anv_cmd_buffer, anv_cmd_buffer, ${e.params[0].name});
       return anv_cmd_buffer->device->dispatch.${e.name}(${e.call_params()});
+    % elif e.params[0].type == 'VkQueue':
+      ANV_FROM_HANDLE(anv_queue, anv_queue, ${e.params[0].name});
+      return anv_queue->device->dispatch.${e.name}(${e.call_params()});
+    % else:
+      assert(!"Unhandled device child trampoline case: ${e.params[0].type}");
     % endif
   }
   % if e.guard is not None:
@@ -423,7 +428,7 @@ class Entrypoint(EntrypointBase):
         self.guard = guard
 
     def is_device_entrypoint(self):
-        return self.params[0].type in ('VkDevice', 'VkCommandBuffer')
+        return self.params[0].type in ('VkDevice', 'VkCommandBuffer', 'VkQueue')
 
     def prefixed_name(self, prefix):
         assert self.name.startswith('vk')