mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
glsl: disable mesh shader output remove when separate shader
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Acked-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36405>
This commit is contained in:
parent
38d385673f
commit
c6b24b4cc2
1 changed files with 11 additions and 4 deletions
|
|
@ -555,11 +555,18 @@ set_always_active_io(nir_shader *shader, nir_variable_mode io_mode)
|
|||
static void
|
||||
disable_varying_optimizations_for_sso(struct gl_shader_program *prog)
|
||||
{
|
||||
unsigned first, last;
|
||||
assert(prog->SeparateShader);
|
||||
|
||||
first = MESA_SHADER_MESH_STAGES;
|
||||
last = 0;
|
||||
if (prog->_LinkedShaders[MESA_SHADER_MESH]) {
|
||||
if (!prog->_LinkedShaders[MESA_SHADER_FRAGMENT]) {
|
||||
set_always_active_io(prog->_LinkedShaders[MESA_SHADER_MESH]->Program->nir,
|
||||
nir_var_shader_out);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned first = MESA_SHADER_MESH_STAGES;
|
||||
unsigned last = 0;
|
||||
|
||||
/* Determine first and last stage. Excluding the compute stage */
|
||||
for (unsigned i = 0; i < MESA_SHADER_COMPUTE; i++) {
|
||||
|
|
@ -573,7 +580,7 @@ disable_varying_optimizations_for_sso(struct gl_shader_program *prog)
|
|||
if (first == MESA_SHADER_MESH_STAGES)
|
||||
return;
|
||||
|
||||
for (unsigned stage = 0; stage < MESA_SHADER_MESH_STAGES; stage++) {
|
||||
for (unsigned stage = 0; stage < MESA_SHADER_STAGES; stage++) {
|
||||
if (!prog->_LinkedShaders[stage])
|
||||
continue;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue