From 4c61c8a0b85e767703328cf819807d92b7570691 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 7 Feb 2022 17:52:25 -0600 Subject: [PATCH] vulkan,lavapipe: Simplify command recording code-gen The Entrypoint class already has utilities for gettingt he parameter list as either declarations or as comma-separated argument names for a call. Use that instead of hand-rolling it. The only modification we need to make is to add the ability to start the list somewhere other than at the beginning. Reviewed-by: Boris Brezillon Acked-by: Mike Blumenkrantz Part-of: --- src/vulkan/util/vk_commands_gen.py | 18 +++++++----------- src/vulkan/util/vk_entrypoints.py | 8 ++++---- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/vulkan/util/vk_commands_gen.py b/src/vulkan/util/vk_commands_gen.py index 7d70b65f99a..8f7f500b60d 100644 --- a/src/vulkan/util/vk_commands_gen.py +++ b/src/vulkan/util/vk_commands_gen.py @@ -68,20 +68,16 @@ TEMPLATE_C = Template(COPYRIGHT + """ % if c.guard is not None: #ifdef ${c.guard} % endif -VKAPI_ATTR ${c.return_type} VKAPI_CALL lvp_${c.name} (VkCommandBuffer commandBuffer -% for p in c.params[1:]: -, ${p.decl} -% endfor -) +VKAPI_ATTR ${c.return_type} VKAPI_CALL lvp_${c.name}(${c.decl_params()}) { LVP_FROM_HANDLE(lvp_cmd_buffer, cmd_buffer, commandBuffer); - vk_enqueue_${to_underscore(c.name)}(&cmd_buffer->queue -% for p in c.params[1:]: -, ${p.name} -% endfor - ); - +% if len(c.params) == 1: + vk_enqueue_${to_underscore(c.name)}(&cmd_buffer->queue); +% else: + vk_enqueue_${to_underscore(c.name)}(&cmd_buffer->queue, + ${c.call_params(start=1)}); +% endif % if c.return_type == 'VkResult': return VK_SUCCESS; % endif diff --git a/src/vulkan/util/vk_entrypoints.py b/src/vulkan/util/vk_entrypoints.py index 65f7948cb46..1654bd5861d 100644 --- a/src/vulkan/util/vk_entrypoints.py +++ b/src/vulkan/util/vk_entrypoints.py @@ -59,11 +59,11 @@ class Entrypoint(EntrypointBase): def is_device_entrypoint(self): return self.params[0].type in ('VkDevice', 'VkCommandBuffer', 'VkQueue') - def decl_params(self): - return ', '.join(p.decl for p in self.params) + def decl_params(self, start=0): + return ', '.join(p.decl for p in self.params[start:]) - def call_params(self): - return ', '.join(p.name for p in self.params) + def call_params(self, start=0): + return ', '.join(p.name for p in self.params[start:]) class EntrypointAlias(EntrypointBase): def __init__(self, name, entrypoint):