intel: Use MapRenderbuffer in spans setup.

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Eric Anholt 2011-10-11 14:46:31 -07:00
parent 92054cd94e
commit bae10c0d2e
1 changed files with 10 additions and 23 deletions

View File

@ -221,7 +221,10 @@ intel_offset_S8(uint32_t stride, uint32_t x, uint32_t y)
void
intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb)
{
struct gl_context *ctx = &intel->ctx;
struct intel_renderbuffer *irb = intel_renderbuffer(rb);
GLubyte *map;
int stride;
if (!irb)
return;
@ -231,25 +234,11 @@ intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb)
if (irb->wrapped_stencil)
intel_renderbuffer_map(intel, irb->wrapped_stencil);
if (!irb->region)
return;
drm_intel_gem_bo_map_gtt(irb->region->bo);
rb->Data = irb->region->bo->virtual;
rb->RowStride = irb->region->pitch;
if (!rb->Name) {
/* Flip orientation of the window system buffer */
rb->Data += rb->RowStride * (irb->region->height - 1) * irb->region->cpp;
rb->RowStride = -rb->RowStride;
} else {
/* Adjust the base pointer of a texture image drawbuffer to the image
* within the miptree region (all else has draw_x/y = 0).
*/
rb->Data += irb->draw_x * irb->region->cpp;
rb->Data += irb->draw_y * rb->RowStride * irb->region->cpp;
}
ctx->Driver.MapRenderbuffer(ctx, rb, 0, 0, rb->Width, rb->Height,
GL_MAP_READ_BIT | GL_MAP_WRITE_BIT,
&map, &stride);
rb->Data = map;
rb->RowStride = stride / _mesa_get_format_bytes(rb->Format);
intel_set_span_functions(intel, rb);
}
@ -258,6 +247,7 @@ void
intel_renderbuffer_unmap(struct intel_context *intel,
struct gl_renderbuffer *rb)
{
struct gl_context *ctx = &intel->ctx;
struct intel_renderbuffer *irb = intel_renderbuffer(rb);
if (!irb)
@ -268,10 +258,7 @@ intel_renderbuffer_unmap(struct intel_context *intel,
if (irb->wrapped_stencil)
intel_renderbuffer_unmap(intel, irb->wrapped_stencil);
if (!irb->region)
return;
drm_intel_gem_bo_unmap_gtt(irb->region->bo);
ctx->Driver.UnmapRenderbuffer(ctx, rb);
rb->GetRow = NULL;
rb->PutRow = NULL;