Use the tiled flag in the sarea to determine region tiling.
This fixes mis-rendering if back/depth fail to get set up as tiled. While it probably won't ever be the case now that the pitch limits are loosened, this is still the right thing to do.
This commit is contained in:
committed by
Eric Anholt
parent
8c180c72d5
commit
3943d7f8b1
@@ -403,7 +403,7 @@ GLboolean intelInitContext( struct intel_context *intel,
|
||||
intelScreen->cpp,
|
||||
intelScreen->front.pitch / intelScreen->cpp,
|
||||
intelScreen->height,
|
||||
GL_FALSE);
|
||||
intelScreen->front.tiled != 0); /* 0: LINEAR */
|
||||
|
||||
|
||||
intel->back_region =
|
||||
@@ -414,7 +414,7 @@ GLboolean intelInitContext( struct intel_context *intel,
|
||||
intelScreen->cpp,
|
||||
intelScreen->back.pitch / intelScreen->cpp,
|
||||
intelScreen->height,
|
||||
(INTEL_DEBUG & DEBUG_TILE) ? 0 : 1);
|
||||
intelScreen->back.tiled != 0);
|
||||
|
||||
/* Still assuming front.cpp == depth.cpp
|
||||
*
|
||||
@@ -430,7 +430,7 @@ GLboolean intelInitContext( struct intel_context *intel,
|
||||
intelScreen->cpp,
|
||||
intelScreen->depth.pitch / intelScreen->cpp,
|
||||
intelScreen->height,
|
||||
(INTEL_DEBUG & DEBUG_TILE) ? 0 : 1);
|
||||
intelScreen->depth.tiled != 0);
|
||||
|
||||
intel_bufferobj_init( intel );
|
||||
intel->batch = intel_batchbuffer_alloc( intel );
|
||||
|
||||
@@ -230,16 +230,19 @@ intelUpdateScreenFromSAREA(intelScreenPrivate *intelScreen,
|
||||
intelScreen->front.pitch = sarea->pitch * intelScreen->cpp;
|
||||
intelScreen->front.handle = sarea->front_handle;
|
||||
intelScreen->front.size = sarea->front_size;
|
||||
intelScreen->front.tiled = sarea->front_tiled;
|
||||
|
||||
intelScreen->back.offset = sarea->back_offset;
|
||||
intelScreen->back.pitch = sarea->pitch * intelScreen->cpp;
|
||||
intelScreen->back.handle = sarea->back_handle;
|
||||
intelScreen->back.size = sarea->back_size;
|
||||
|
||||
intelScreen->back.tiled = sarea->back_tiled;
|
||||
|
||||
intelScreen->depth.offset = sarea->depth_offset;
|
||||
intelScreen->depth.pitch = sarea->pitch * intelScreen->cpp;
|
||||
intelScreen->depth.handle = sarea->depth_handle;
|
||||
intelScreen->depth.size = sarea->depth_size;
|
||||
intelScreen->depth.tiled = sarea->depth_tiled;
|
||||
|
||||
intelScreen->tex.offset = sarea->tex_offset;
|
||||
intelScreen->logTextureGranularity = sarea->log_tex_granularity;
|
||||
@@ -249,6 +252,7 @@ intelUpdateScreenFromSAREA(intelScreenPrivate *intelScreen,
|
||||
intelScreen->rotated.offset = sarea->rotated_offset;
|
||||
intelScreen->rotated.pitch = sarea->rotated_pitch * intelScreen->cpp;
|
||||
intelScreen->rotated.size = sarea->rotated_size;
|
||||
intelScreen->rotated.tiled = sarea->rotated_tiled;
|
||||
intelScreen->current_rotation = sarea->rotation;
|
||||
#if 0
|
||||
matrix23Rotate(&intelScreen->rotMatrix,
|
||||
|
||||
@@ -42,6 +42,7 @@ typedef struct {
|
||||
char *map; /* memory map */
|
||||
int offset; /* from start of video mem, in bytes */
|
||||
int pitch; /* row stride, in pixels */
|
||||
unsigned int tiled;
|
||||
} intelRegion;
|
||||
|
||||
typedef struct
|
||||
|
||||
Reference in New Issue
Block a user