From bec1e8d3fdf41372317e67a2d81aafa0b27b793f Mon Sep 17 00:00:00 2001 From: Hoe Hao Cheng Date: Sun, 30 May 2021 18:53:56 +0800 Subject: [PATCH] zink/codegen: allow conditional enabling of instance extensions Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/zink_instance.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_instance.py b/src/gallium/drivers/zink/zink_instance.py index 73f983ab323..299a680907f 100644 --- a/src/gallium/drivers/zink/zink_instance.py +++ b/src/gallium/drivers/zink/zink_instance.py @@ -137,7 +137,6 @@ zink_create_instance(struct zink_instance_info *instance_info) %for ext in extensions: if (!strcmp(extension_props[i].extensionName, ${ext.extension_name_literal()})) { have_${ext.name_with_vendor()} = true; - extensions[num_extensions++] = ${ext.extension_name_literal()}; } %endfor } @@ -172,7 +171,17 @@ zink_create_instance(struct zink_instance_info *instance_info) } %for ext in extensions: - instance_info->have_${ext.name_with_vendor()} = have_${ext.name_with_vendor()}; +<% + conditions = "" + if ext.enable_conds: + for cond in ext.enable_conds: + conditions += "&& (" + cond + ") " + conditions = conditions.strip() +%>\ + if (have_${ext.name_with_vendor()} ${conditions}) { + instance_info->have_${ext.name_with_vendor()} = have_${ext.name_with_vendor()}; + extensions[num_extensions++] = ${ext.extension_name_literal()}; + } %endfor %for layer in layers: