In intelCopyBuffer(), use renderbuffer regions instead of context's region

pointers.  Added const qualifiers.  Added comments.
This commit is contained in:
Brian Paul 2006-03-20 15:50:09 +00:00
parent 6d6e7a08c7
commit b176ef05f2

View file

@ -43,10 +43,9 @@
#include "intel_bufmgr.h"
/*
* Copy the back buffer to the front buffer.
/**
* Copy the back color buffer to the front color buffer.
* Used for SwapBuffers().
*/
void intelCopyBuffer( const __DRIdrawablePrivate *dPriv )
{
@ -67,19 +66,33 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv )
*/
LOCK_HARDWARE( intel );
/* XXX FBO: change this to if intel->numClipRects */
if (intel->driDrawable &&
intel->driDrawable->numClipRects)
{
intelScreenPrivate *intelScreen = intel->intelScreen;
__DRIdrawablePrivate *dPriv = intel->driDrawable;
int nbox = dPriv->numClipRects;
drm_clip_rect_t *pbox = dPriv->pClipRects;
int pitch = intelScreen->front.pitch; /* XXX FBO change */
int cpp = intelScreen->cpp; /* XXX FBO change */
const intelScreenPrivate *intelScreen = intel->intelScreen;
/* XXX why are we declaring a new dPriv (already passed as param!) */
const __DRIdrawablePrivate *dPriv = intel->driDrawable;
const struct gl_framebuffer *fb
= (const struct gl_framebuffer *) dPriv->driverPrivate;
const struct intel_renderbuffer *irbFront
= intel_renderbuffer(fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
const struct intel_renderbuffer *irbBack
= intel_renderbuffer(fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer);
const int nbox = dPriv->numClipRects;
const drm_clip_rect_t *pbox = dPriv->pClipRects;
const int pitch = irbFront->region->pitch;
const int cpp= irbFront->region->cpp;
int BR13, CMD;
int i;
ASSERT(fb);
ASSERT(fb->Name == 0); /* Not a user-created FBO */
ASSERT(irbFront);
ASSERT(irbBack);
ASSERT(irbFront->region);
ASSERT(irbBack->region);
ASSERT(irbFront->region->pitch == irbBack->region->pitch);
ASSERT(irbFront->region->cpp == irbBack->region->cpp);
if (cpp == 2) {
BR13 = (pitch * cpp) | (0xCC << 16) | (1<<24);
@ -106,17 +119,16 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv )
OUT_BATCH( (pbox->y2 << 16) | pbox->x2 );
if (intel->sarea->pf_current_page == 0)
OUT_RELOC( intel->front_region->buffer, DRM_MM_TT|DRM_MM_WRITE, 0 );
OUT_RELOC( irbFront->region->buffer, DRM_MM_TT|DRM_MM_WRITE, 0 );
else
OUT_RELOC( intel->back_region->buffer, DRM_MM_TT|DRM_MM_WRITE, 0 );
OUT_RELOC( irbBack->region->buffer, DRM_MM_TT|DRM_MM_WRITE, 0 );
OUT_BATCH( (pbox->y1 << 16) | pbox->x1 );
OUT_BATCH( BR13 & 0xffff );
if (intel->sarea->pf_current_page == 0)
OUT_RELOC( intel->back_region->buffer, DRM_MM_TT|DRM_MM_READ, 0 );
OUT_RELOC( irbBack->region->buffer, DRM_MM_TT|DRM_MM_READ, 0 );
else
OUT_RELOC( intel->front_region->buffer, DRM_MM_TT|DRM_MM_READ, 0 );
OUT_RELOC( irbFront->region->buffer, DRM_MM_TT|DRM_MM_READ, 0 );
ADVANCE_BATCH();
}