mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 21:30:23 +01:00
prog_to_nir: fix write from vps to FOG
for fragment programs we already treat fog as a single component value, but for vp we didn't. Fixes fog related piglit tests with my out of tree Nouveau nir patches. Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
bca28deb46
commit
8a8742d327
1 changed files with 7 additions and 1 deletions
|
|
@ -867,6 +867,11 @@ 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 */
|
||||
src = nir_channel(b, src, 0);
|
||||
}
|
||||
unsigned num_components = glsl_get_vector_elements(var->type);
|
||||
nir_store_var(b, var, src, (1 << num_components) - 1);
|
||||
}
|
||||
|
|
@ -950,7 +955,8 @@ setup_registers_and_variables(struct ptn_compile *c)
|
|||
reg->num_components = 4;
|
||||
|
||||
nir_variable *var = rzalloc(shader, nir_variable);
|
||||
if (c->prog->Target == GL_FRAGMENT_PROGRAM_ARB && i == FRAG_RESULT_DEPTH)
|
||||
if ((c->prog->Target == GL_FRAGMENT_PROGRAM_ARB && i == FRAG_RESULT_DEPTH) ||
|
||||
(c->prog->Target == GL_VERTEX_PROGRAM_ARB && i == VARYING_SLOT_FOGC))
|
||||
var->type = glsl_float_type();
|
||||
else
|
||||
var->type = glsl_vec4_type();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue