mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
panfrost: Make scissor test more robust
See v3d implementation. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
5c554e235d
commit
fad76470d5
1 changed files with 15 additions and 8 deletions
|
|
@ -1371,19 +1371,26 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
|
|||
};
|
||||
|
||||
/* Always scissor to the viewport by default. */
|
||||
int minx = (int) (vp->translate[0] - vp->scale[0]);
|
||||
int maxx = (int) (vp->translate[0] + vp->scale[0]);
|
||||
float vp_minx = (int) (vp->translate[0] - fabsf(vp->scale[0]));
|
||||
float vp_maxx = (int) (vp->translate[0] + fabsf(vp->scale[0]));
|
||||
|
||||
int miny = (int) (vp->translate[1] - vp->scale[1]);
|
||||
int maxy = (int) (vp->translate[1] + vp->scale[1]);
|
||||
float vp_miny = (int) (vp->translate[1] - fabsf(vp->scale[1]));
|
||||
float vp_maxy = (int) (vp->translate[1] + fabsf(vp->scale[1]));
|
||||
|
||||
/* Apply the scissor test */
|
||||
|
||||
unsigned minx, miny, maxx, maxy;
|
||||
|
||||
if (ss && ctx->rasterizer && ctx->rasterizer->base.scissor) {
|
||||
minx = ss->minx;
|
||||
maxx = ss->maxx;
|
||||
miny = ss->miny;
|
||||
maxy = ss->maxy;
|
||||
minx = MAX2(ss->minx, vp_minx);
|
||||
miny = MAX2(ss->miny, vp_miny);
|
||||
maxx = MIN2(ss->maxx, vp_maxx);
|
||||
maxy = MIN2(ss->maxy, vp_maxy);
|
||||
} else {
|
||||
minx = vp_minx;
|
||||
miny = vp_miny;
|
||||
maxx = vp_maxx;
|
||||
maxy = vp_maxy;
|
||||
}
|
||||
|
||||
/* Hardware needs the min/max to be strictly ordered, so flip if we
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue