r600/sfn: Use valid pixel mode only in fragment shaders
authorGert Wollny <gert.wollny@collabora.com>
Sun, 9 May 2021 17:46:24 +0000 (19:46 +0200)
committerGert Wollny <gert.wollny@collabora.com>
Tue, 18 May 2021 20:07:10 +0000 (22:07 +0200)
The doc says that it should only be set in the FS.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10608>

src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp

index e47a46b..9a4a4f5 100644 (file)
@@ -757,7 +757,7 @@ bool AssemblyFromShaderLegacyImpl::visit(const FetchInstruction& fetch_instr)
       }
    }
 
-   m_bc->cf_last->vpm = fetch_instr.use_vpm();
+   m_bc->cf_last->vpm = (m_bc->type == PIPE_SHADER_FRAGMENT) && fetch_instr.use_vpm();
    m_bc->cf_last->barrier = 1;
 
    return true;
@@ -858,7 +858,7 @@ bool AssemblyFromShaderLegacyImpl::visit(const GDSInstr& instr)
    int r = r600_bytecode_add_gds(m_bc, &gds);
    if (r)
       return false;
-   m_bc->cf_last->vpm = 1;
+   m_bc->cf_last->vpm = PIPE_SHADER_FRAGMENT == m_bc->type;
    m_bc->cf_last->barrier = 1;
    return true;
 }
@@ -1041,7 +1041,7 @@ bool AssemblyFromShaderLegacyImpl::visit(const RatInstruction& instr)
              instr.data_swz(2) == PIPE_SWIZZLE_MAX) ;
    }
 
-   cf->vpm = 1;
+   cf->vpm = m_bc->type == PIPE_SHADER_FRAGMENT;
    cf->barrier = 1;
    cf->mark = instr.need_ack();
    cf->output.elem_size = instr.elm_size();