mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
In intelCopyBuffer(), use renderbuffer regions instead of context's region
pointers. Added const qualifiers. Added comments.
This commit is contained in:
parent
6d6e7a08c7
commit
b176ef05f2
1 changed files with 28 additions and 16 deletions
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue