diff options
Diffstat (limited to 'src/mesa/program/prog_to_nir.c')
-rw-r--r-- | src/mesa/program/prog_to_nir.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c index 84ba708d0be..5289f0cb4f2 100644 --- a/src/mesa/program/prog_to_nir.c +++ b/src/mesa/program/prog_to_nir.c @@ -841,8 +841,9 @@ ptn_add_output_stores(struct ptn_compile *c) src = nir_channel(b, src, 2); } if (c->prog->Target == GL_VERTEX_PROGRAM_ARB && - var->data.location == VARYING_SLOT_FOGC) { - /* result.fogcoord is a single component value */ + (var->data.location == VARYING_SLOT_FOGC || + var->data.location == VARYING_SLOT_PSIZ)) { + /* result.{fogcoord,psiz} is a single component value */ src = nir_channel(b, src, 0); } unsigned num_components = glsl_get_vector_elements(var->type); @@ -929,7 +930,8 @@ setup_registers_and_variables(struct ptn_compile *c) nir_variable *var = rzalloc(shader, nir_variable); if ((c->prog->Target == GL_FRAGMENT_PROGRAM_ARB && i == FRAG_RESULT_DEPTH) || - (c->prog->Target == GL_VERTEX_PROGRAM_ARB && i == VARYING_SLOT_FOGC)) + (c->prog->Target == GL_VERTEX_PROGRAM_ARB && i == VARYING_SLOT_FOGC) || + (c->prog->Target == GL_VERTEX_PROGRAM_ARB && i == VARYING_SLOT_PSIZ)) var->type = glsl_float_type(); else var->type = glsl_vec4_type(); |