nir: account for point-coord origin when lowering it
The resulting point-coord origin not only depends on whether
the draw buffer is flipped but also on GL_POINT_SPRITE_COORD_ORIGIN
state. Which makes its transform differ from a transform of wpos.
On freedreno fixes:
gl-3.2-pointsprite-origin
gl-3.2-pointsprite-origin -fbo
Fixes: d934d320
"nir: Add flipping of gl_PointCoord.y in nir_lower_wpos_ytransform."
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8200>
This commit is contained in:

committed by
Marge Bot

parent
3898f747ce
commit
33fd9e5d8a
@@ -636,6 +636,18 @@ fetch_state(struct gl_context *ctx, const gl_state_index16 state[],
|
||||
}
|
||||
return;
|
||||
|
||||
case STATE_FB_PNTC_Y_TRANSFORM:
|
||||
{
|
||||
bool flip_y = (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) ^
|
||||
(ctx->DrawBuffer->FlipY);
|
||||
|
||||
value[0] = flip_y ? -1.0F : 1.0F;
|
||||
value[1] = flip_y ? 1.0F : 0.0F;
|
||||
value[2] = 0.0F;
|
||||
value[3] = 0.0F;
|
||||
}
|
||||
return;
|
||||
|
||||
case STATE_TCS_PATCH_VERTICES_IN:
|
||||
val[0].i = ctx->TessCtrlProgram.patch_vertices;
|
||||
return;
|
||||
@@ -802,6 +814,9 @@ _mesa_program_state_flags(const gl_state_index16 state[STATE_LENGTH])
|
||||
case STATE_FB_WPOS_Y_TRANSFORM:
|
||||
return _NEW_BUFFERS;
|
||||
|
||||
case STATE_FB_PNTC_Y_TRANSFORM:
|
||||
return _NEW_BUFFERS | _NEW_POINT;
|
||||
|
||||
case STATE_ADVANCED_BLENDING_MODE:
|
||||
return _NEW_COLOR;
|
||||
|
||||
@@ -1057,6 +1072,9 @@ append_token(char *dst, gl_state_index k)
|
||||
case STATE_FB_WPOS_Y_TRANSFORM:
|
||||
append(dst, "FbWposYTransform");
|
||||
break;
|
||||
case STATE_FB_PNTC_Y_TRANSFORM:
|
||||
append(dst, "PntcYTransform");
|
||||
break;
|
||||
case STATE_ADVANCED_BLENDING_MODE:
|
||||
append(dst, "AdvancedBlendingMode");
|
||||
break;
|
||||
|
Reference in New Issue
Block a user