Mesa (main): d3d12: Update nir varying bitmasks when linking stages
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 4 21:01:14 UTC 2022
Module: Mesa
Branch: main
Commit: 3feae7ec5dd2cf7cef0750d4fb71ce40503d0d67
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3feae7ec5dd2cf7cef0750d4fb71ce40503d0d67
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Fri Feb 4 08:22:08 2022 -0800
d3d12: Update nir varying bitmasks when linking stages
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 | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
index ff3a105502a..747c8805c11 100644
--- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
@@ -1092,6 +1092,7 @@ select_shader_variant(struct d3d12_selection_context *sel_ctx, d3d12_shader_sele
/* Add the needed in and outputs, and re-sort */
if (prev) {
uint64_t mask = key.required_varying_inputs.mask & ~new_nir_variant->info.inputs_read;
+ new_nir_variant->info.inputs_read |= mask;
while (mask) {
int slot = u_bit_scan64(&mask);
create_varyings_from_info(new_nir_variant, &key.required_varying_inputs, slot, nir_var_shader_in, false);
@@ -1099,6 +1100,7 @@ select_shader_variant(struct d3d12_selection_context *sel_ctx, d3d12_shader_sele
if (sel->stage == PIPE_SHADER_TESS_EVAL) {
uint32_t patch_mask = (uint32_t)key.ds.required_patch_inputs.mask & ~new_nir_variant->info.patch_inputs_read;
+ new_nir_variant->info.patch_inputs_read |= patch_mask;
while (patch_mask) {
int slot = u_bit_scan(&patch_mask);
create_varyings_from_info(new_nir_variant, &key.ds.required_patch_inputs, slot, nir_var_shader_in, true);
@@ -1111,6 +1113,7 @@ select_shader_variant(struct d3d12_selection_context *sel_ctx, d3d12_shader_sele
if (next) {
uint64_t mask = key.required_varying_outputs.mask & ~new_nir_variant->info.outputs_written;
+ new_nir_variant->info.outputs_written |= mask;
while (mask) {
int slot = u_bit_scan64(&mask);
create_varyings_from_info(new_nir_variant, &key.required_varying_outputs, slot, nir_var_shader_out, false);
@@ -1118,6 +1121,7 @@ select_shader_variant(struct d3d12_selection_context *sel_ctx, d3d12_shader_sele
if (sel->stage == PIPE_SHADER_TESS_CTRL) {
uint32_t patch_mask = (uint32_t)key.hs.required_patch_outputs.mask & ~new_nir_variant->info.patch_outputs_written;
+ new_nir_variant->info.patch_outputs_written |= patch_mask;
while (patch_mask) {
int slot = u_bit_scan(&patch_mask);
create_varyings_from_info(new_nir_variant, &key.ds.required_patch_inputs, slot, nir_var_shader_out, true);
More information about the mesa-commit
mailing list