mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
update i915/i830Scissor to use DrawBuffer instead of driDrawable bounds
This commit is contained in:
parent
f04f5e990a
commit
65f1cf2cbf
2 changed files with 12 additions and 26 deletions
|
|
@ -498,14 +498,13 @@ static void i830Scissor(GLcontext *ctx, GLint x, GLint y,
|
||||||
GLsizei w, GLsizei h)
|
GLsizei w, GLsizei h)
|
||||||
{
|
{
|
||||||
struct i830_context *i830 = i830_context(ctx);
|
struct i830_context *i830 = i830_context(ctx);
|
||||||
intelScreenPrivate *screen = i830->intel.intelScreen;
|
|
||||||
int x1, y1, x2, y2;
|
int x1, y1, x2, y2;
|
||||||
|
|
||||||
if (!i830->intel.driDrawable)
|
if (!ctx->DrawBuffer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x1 = x;
|
x1 = x;
|
||||||
y1 = i830->intel.driDrawable->h - (y + h);
|
y1 = ctx->DrawBuffer->Height - (y + h);
|
||||||
x2 = x + w - 1;
|
x2 = x + w - 1;
|
||||||
y2 = y1 + h - 1;
|
y2 = y1 + h - 1;
|
||||||
|
|
||||||
|
|
@ -513,16 +512,10 @@ static void i830Scissor(GLcontext *ctx, GLint x, GLint y,
|
||||||
fprintf(stderr, "[%s] x(%d) y(%d) w(%d) h(%d)\n", __FUNCTION__,
|
fprintf(stderr, "[%s] x(%d) y(%d) w(%d) h(%d)\n", __FUNCTION__,
|
||||||
x, y, w, h);
|
x, y, w, h);
|
||||||
|
|
||||||
if (x1 < 0) x1 = 0;
|
x1 = CLAMP(x1, 0, ctx->DrawBuffer->Width - 1);
|
||||||
if (y1 < 0) y1 = 0;
|
y1 = CLAMP(y1, 0, ctx->DrawBuffer->Height - 1);
|
||||||
if (x2 < 0) x2 = 0;
|
x2 = CLAMP(x2, 0, ctx->DrawBuffer->Width - 1);
|
||||||
if (y2 < 0) y2 = 0;
|
y2 = CLAMP(y2, 0, ctx->DrawBuffer->Height - 1);
|
||||||
|
|
||||||
if (x2 >= screen->width) x2 = screen->width-1;
|
|
||||||
if (y2 >= screen->height) y2 = screen->height-1;
|
|
||||||
if (x1 >= screen->width) x1 = screen->width-1;
|
|
||||||
if (y1 >= screen->height) y1 = screen->height-1;
|
|
||||||
|
|
||||||
|
|
||||||
I830_STATECHANGE(i830, I830_UPLOAD_BUFFERS);
|
I830_STATECHANGE(i830, I830_UPLOAD_BUFFERS);
|
||||||
i830->state.Buffer[I830_DESTREG_SR1] = (y1 << 16) | (x1 & 0xffff);
|
i830->state.Buffer[I830_DESTREG_SR1] = (y1 << 16) | (x1 & 0xffff);
|
||||||
|
|
|
||||||
|
|
@ -350,14 +350,13 @@ static void i915Scissor(GLcontext *ctx, GLint x, GLint y,
|
||||||
GLsizei w, GLsizei h)
|
GLsizei w, GLsizei h)
|
||||||
{
|
{
|
||||||
struct i915_context *i915 = I915_CONTEXT(ctx);
|
struct i915_context *i915 = I915_CONTEXT(ctx);
|
||||||
intelScreenPrivate *screen = i915->intel.intelScreen;
|
|
||||||
int x1, y1, x2, y2;
|
int x1, y1, x2, y2;
|
||||||
|
|
||||||
if (!i915->intel.driDrawable)
|
if (!ctx->DrawBuffer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x1 = x;
|
x1 = x;
|
||||||
y1 = i915->intel.driDrawable->h - (y + h);
|
y1 = ctx->DrawBuffer->Height - (y + h);
|
||||||
x2 = x + w - 1;
|
x2 = x + w - 1;
|
||||||
y2 = y1 + h - 1;
|
y2 = y1 + h - 1;
|
||||||
|
|
||||||
|
|
@ -365,16 +364,10 @@ static void i915Scissor(GLcontext *ctx, GLint x, GLint y,
|
||||||
fprintf(stderr, "[%s] x(%d) y(%d) w(%d) h(%d)\n", __FUNCTION__,
|
fprintf(stderr, "[%s] x(%d) y(%d) w(%d) h(%d)\n", __FUNCTION__,
|
||||||
x, y, w, h);
|
x, y, w, h);
|
||||||
|
|
||||||
if (x1 < 0) x1 = 0;
|
x1 = CLAMP(x1, 0, ctx->DrawBuffer->Width - 1);
|
||||||
if (y1 < 0) y1 = 0;
|
y1 = CLAMP(y1, 0, ctx->DrawBuffer->Height - 1);
|
||||||
if (x2 < 0) x2 = 0;
|
x2 = CLAMP(x2, 0, ctx->DrawBuffer->Width - 1);
|
||||||
if (y2 < 0) y2 = 0;
|
y2 = CLAMP(y2, 0, ctx->DrawBuffer->Height - 1);
|
||||||
|
|
||||||
if (x2 >= screen->width) x2 = screen->width-1;
|
|
||||||
if (y2 >= screen->height) y2 = screen->height-1;
|
|
||||||
if (x1 >= screen->width) x1 = screen->width-1;
|
|
||||||
if (y1 >= screen->height) y1 = screen->height-1;
|
|
||||||
|
|
||||||
|
|
||||||
I915_STATECHANGE(i915, I915_UPLOAD_BUFFERS);
|
I915_STATECHANGE(i915, I915_UPLOAD_BUFFERS);
|
||||||
i915->state.Buffer[I915_DESTREG_SR1] = (y1 << 16) | (x1 & 0xffff);
|
i915->state.Buffer[I915_DESTREG_SR1] = (y1 << 16) | (x1 & 0xffff);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue