Mesa (main): d3d12: Don't add arrayed VS outputs when next stage uses per-vertex inputs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 4 21:01:14 UTC 2022
Module: Mesa
Branch: main
Commit: ccaa79a1baeb7af87ae84e73a7e6e74bea2050a4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccaa79a1baeb7af87ae84e73a7e6e74bea2050a4
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Fri Feb 4 09:49:29 2022 -0800
d3d12: Don't add arrayed VS outputs when next stage uses per-vertex inputs
Reviewed-by: Sil Vilerino <sivileri at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14881>
---
src/gallium/drivers/d3d12/d3d12_compiler.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
index 754a1783310..20e18b1c50d 100644
--- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
@@ -562,7 +562,15 @@ fill_varyings(struct d3d12_varying_info *info, nir_shader *s,
if (!(mask & slot_bit))
continue;
- info->slots[slot].types[var->data.location_frac] = var->type;
+
+ const struct glsl_type *type = var->type;
+ if ((s->info.stage == MESA_SHADER_GEOMETRY ||
+ s->info.stage == MESA_SHADER_TESS_CTRL) &&
+ (modes & nir_var_shader_in) &&
+ glsl_type_is_array(type))
+ type = glsl_get_array_element(type);
+ info->slots[slot].types[var->data.location_frac] = type;
+
info->slots[slot].patch = var->data.patch;
auto& var_slot = info->slots[slot].vars[var->data.location_frac];
var_slot.driver_location = var->data.driver_location;
More information about the mesa-commit
mailing list