summaryrefslogtreecommitdiff
path: root/src/mesa/program/prog_statevars.c
diff options
context:
space:
mode:
authorDanylo Piliaiev <dpiliaiev@igalia.com>2020-12-22 14:37:45 +0200
committerMarge Bot <eric+marge@anholt.net>2021-01-04 13:41:33 +0000
commit33fd9e5d8a6b85e20d34f89df655fa5a75eca431 (patch)
tree2cb9d497267d7e3c0b6ef9f6e4c6e71cafc0ff13 /src/mesa/program/prog_statevars.c
parent3898f747ce47dd1de2b6fcada1d8d3a670fd4d36 (diff)
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>
Diffstat (limited to 'src/mesa/program/prog_statevars.c')
-rw-r--r--src/mesa/program/prog_statevars.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c
index 64bff6fcfa8..e2c9039e67d 100644
--- a/src/mesa/program/prog_statevars.c
+++ b/src/mesa/program/prog_statevars.c
@@ -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;