diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common.c | 76 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common.h | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common_context.h | 4 |
3 files changed, 15 insertions, 69 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 64a7c3f33ff..c7ba2afc473 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -90,24 +90,18 @@ static GLboolean intersect_rect(drm_clip_rect_t * out, void radeonRecalcScissorRects(radeonContextPtr radeon) { - drm_clip_rect_t *out; - int i; - - /* Grow cliprect store? - */ - if (radeon->state.scissor.numAllocedClipRects < radeon->numClipRects) { - while (radeon->state.scissor.numAllocedClipRects < - radeon->numClipRects) { - radeon->state.scissor.numAllocedClipRects += 1; /* zero case */ - radeon->state.scissor.numAllocedClipRects *= 2; - } + struct gl_context *ctx = radeon->glCtx; + drm_clip_rect_t bounds; - if (radeon->state.scissor.pClipRects) - FREE(radeon->state.scissor.pClipRects); + bounds.x1 = 0; + bounds.y1 = 0; + bounds.x2 = ctx->DrawBuffer->Width; + bounds.x2 = ctx->DrawBuffer->Height; + if (!radeon->state.scissor.numAllocedClipRects) { + radeon->state.scissor.numAllocedClipRects = 1; radeon->state.scissor.pClipRects = - MALLOC(radeon->state.scissor.numAllocedClipRects * - sizeof(drm_clip_rect_t)); + MALLOC(sizeof(drm_clip_rect_t)); if (radeon->state.scissor.pClipRects == NULL) { radeon->state.scissor.numAllocedClipRects = 0; @@ -115,54 +109,17 @@ void radeonRecalcScissorRects(radeonContextPtr radeon) } } - out = radeon->state.scissor.pClipRects; radeon->state.scissor.numClipRects = 0; - - for (i = 0; i < radeon->numClipRects; i++) { - if (intersect_rect(out, - &radeon->pClipRects[i], - &radeon->state.scissor.rect)) { - radeon->state.scissor.numClipRects++; - out++; - } + if (intersect_rect(radeon->state.scissor.pClipRects, + &bounds, + &radeon->state.scissor.rect)) { + radeon->state.scissor.numClipRects = 1; } if (radeon->vtbl.update_scissor) radeon->vtbl.update_scissor(radeon->glCtx); } -void radeon_get_cliprects(radeonContextPtr radeon, - struct drm_clip_rect **cliprects, - unsigned int *num_cliprects, - int *x_off, int *y_off) -{ - __DRIdrawable *dPriv = radeon_get_drawable(radeon); - struct radeon_framebuffer *rfb = dPriv->driverPrivate; - - if (radeon->constant_cliprect) { - radeon->fboRect.x1 = 0; - radeon->fboRect.y1 = 0; - radeon->fboRect.x2 = radeon->glCtx->DrawBuffer->Width; - radeon->fboRect.y2 = radeon->glCtx->DrawBuffer->Height; - - *cliprects = &radeon->fboRect; - *num_cliprects = 1; - *x_off = 0; - *y_off = 0; - } else if (radeon->front_cliprects || - rfb->pf_active || dPriv->numBackClipRects == 0) { - *cliprects = dPriv->pClipRects; - *num_cliprects = dPriv->numClipRects; - *x_off = dPriv->x; - *y_off = dPriv->y; - } else { - *num_cliprects = dPriv->numBackClipRects; - *cliprects = dPriv->pBackClipRects; - *x_off = dPriv->backX; - *y_off = dPriv->backY; - } -} - /** * Update cliprects and scissors. */ @@ -176,10 +133,6 @@ void radeonSetCliprects(radeonContextPtr radeon) struct radeon_framebuffer *const draw_rfb = drawable->driverPrivate; struct radeon_framebuffer *const read_rfb = readable->driverPrivate; - int x_off, y_off; - - radeon_get_cliprects(radeon, &radeon->pClipRects, - &radeon->numClipRects, &x_off, &y_off); if ((draw_rfb->base.Width != drawable->w) || (draw_rfb->base.Height != drawable->h)) { @@ -766,8 +719,7 @@ int rcommonFlushCmdBufLocked(radeonContextPtr rmesa, const char *caller) rmesa->cmdbuf.flushing = 1; if (RADEON_DEBUG & RADEON_IOCTL) { - fprintf(stderr, "%s from %s - %i cliprects\n", - __FUNCTION__, caller, rmesa->numClipRects); + fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); } radeonEmitQueryEnd(rmesa->glCtx); diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h b/src/mesa/drivers/dri/radeon/radeon_common.h index 344250efcef..67925cb9a10 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.h +++ b/src/mesa/drivers/dri/radeon/radeon_common.h @@ -25,10 +25,6 @@ void radeon_draw_buffer(struct gl_context *ctx, struct gl_framebuffer *fb); void radeonDrawBuffer( struct gl_context *ctx, GLenum mode ); void radeonReadBuffer( struct gl_context *ctx, GLenum mode ); void radeon_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height); -void radeon_get_cliprects(radeonContextPtr radeon, - struct drm_clip_rect **cliprects, - unsigned int *num_cliprects, - int *x_off, int *y_off); void radeon_fbo_init(struct radeon_context *radeon); void radeon_renderbuffer_set_bo(struct radeon_renderbuffer *rb, diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h index ef39913b24a..2b478e1ee0c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h @@ -457,9 +457,7 @@ struct radeon_context { GLuint NewGLState; DECLARE_RENDERINPUTS(tnl_index_bitset); /* index of bits for last tnl_install_attrs */ - /* Drawable, cliprect and scissor information */ - GLuint numClipRects; /* Cliprects for the draw buffer */ - drm_clip_rect_t *pClipRects; + /* Drawable information */ unsigned int lastStamp; drm_radeon_sarea_t *sarea; /* Private SAREA data */ |