From 402b2bea640ebf69f78d8122f98435dd3bbeb7df Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 10 Sep 2005 00:10:15 +0000 Subject: [PATCH] Add offset and pitch fields to intelRegion. Remove frontOffset, frontPitch, backOffset, backPitch, depthOffset, depthPitch, textureOffset fields. --- src/mesa/drivers/dri/i915/i830_metaops.c | 8 ++-- src/mesa/drivers/dri/i915/i830_state.c | 6 +-- src/mesa/drivers/dri/i915/i915_metaops.c | 6 +-- src/mesa/drivers/dri/i915/i915_state.c | 6 +-- src/mesa/drivers/dri/i915/intel_batchbuffer.c | 22 +++++------ src/mesa/drivers/dri/i915/intel_ioctl.c | 2 +- src/mesa/drivers/dri/i915/intel_pixel.c | 6 +-- src/mesa/drivers/dri/i915/intel_screen.c | 38 ++++++++++--------- src/mesa/drivers/dri/i915/intel_screen.h | 24 ++++-------- src/mesa/drivers/dri/i915/intel_state.c | 4 +- src/mesa/drivers/dri/i915/intel_tex.c | 2 +- 11 files changed, 58 insertions(+), 66 deletions(-) diff --git a/src/mesa/drivers/dri/i915/i830_metaops.c b/src/mesa/drivers/dri/i915/i830_metaops.c index e12ef88a742..53997f83366 100644 --- a/src/mesa/drivers/dri/i915/i830_metaops.c +++ b/src/mesa/drivers/dri/i915/i830_metaops.c @@ -389,7 +389,7 @@ i830ClearWithTris(intelContextPtr intel, GLbitfield mask, if(mask & BUFFER_BIT_FRONT_LEFT) { set_no_depth_stencil_write( i830 ); set_color_mask( i830, GL_TRUE ); - set_draw_offset( i830, screen->frontOffset ); + set_draw_offset( i830, screen->front.offset ); draw_quad(i830, x0, x1, y0, y1, intel->clear_red, intel->clear_green, intel->clear_blue, intel->clear_alpha, @@ -399,7 +399,7 @@ i830ClearWithTris(intelContextPtr intel, GLbitfield mask, if(mask & BUFFER_BIT_BACK_LEFT) { set_no_depth_stencil_write( i830 ); set_color_mask( i830, GL_TRUE ); - set_draw_offset( i830, screen->backOffset ); + set_draw_offset( i830, screen->back.offset ); draw_quad(i830, x0, x1, y0, y1, intel->clear_red, intel->clear_green, @@ -413,7 +413,7 @@ i830ClearWithTris(intelContextPtr intel, GLbitfield mask, intel->ctx.Stencil.Clear); set_color_mask( i830, GL_FALSE ); - set_draw_offset( i830, screen->frontOffset ); + set_draw_offset( i830, screen->front.offset ); draw_quad( i830, x0, x1, y0, y1, 0, 0, 0, 0, 0, 0, 0, 0 ); } @@ -542,7 +542,7 @@ i830TryTextureReadPixels( GLcontext *ctx, src_offset, screen->width, screen->height, - screen->frontPitch, + screen->front.pitch, textureFormat ); diff --git a/src/mesa/drivers/dri/i915/i830_state.c b/src/mesa/drivers/dri/i915/i830_state.c index ec19fe980dc..e3f632348b6 100644 --- a/src/mesa/drivers/dri/i915/i830_state.c +++ b/src/mesa/drivers/dri/i915/i830_state.c @@ -1000,16 +1000,16 @@ static void i830_init_packets( i830ContextPtr i830 ) i830->state.Buffer[I830_DESTREG_CBUFADDR0] = _3DSTATE_BUF_INFO_CMD; i830->state.Buffer[I830_DESTREG_CBUFADDR1] = (BUF_3D_ID_COLOR_BACK | - BUF_3D_PITCH(screen->frontPitch * screen->cpp) | + BUF_3D_PITCH(screen->front.pitch * screen->cpp) | BUF_3D_USE_FENCE); i830->state.Buffer[I830_DESTREG_DBUFADDR0] = _3DSTATE_BUF_INFO_CMD; i830->state.Buffer[I830_DESTREG_DBUFADDR1] = (BUF_3D_ID_DEPTH | - BUF_3D_PITCH(screen->depthPitch * screen->cpp) | + BUF_3D_PITCH(screen->depth.pitch * screen->cpp) | BUF_3D_USE_FENCE); - i830->state.Buffer[I830_DESTREG_DBUFADDR2] = screen->depthOffset; + i830->state.Buffer[I830_DESTREG_DBUFADDR2] = screen->depth.offset; i830->state.Buffer[I830_DESTREG_DV0] = _3DSTATE_DST_BUF_VARS_CMD; diff --git a/src/mesa/drivers/dri/i915/i915_metaops.c b/src/mesa/drivers/dri/i915/i915_metaops.c index 2e9063edf0b..a3d22b7bd07 100644 --- a/src/mesa/drivers/dri/i915/i915_metaops.c +++ b/src/mesa/drivers/dri/i915/i915_metaops.c @@ -478,7 +478,7 @@ i915ClearWithTris(intelContextPtr intel, GLbitfield mask, if (mask & BUFFER_BIT_FRONT_LEFT) { set_no_depth_stencil_write( i915 ); set_color_mask( i915, GL_TRUE ); - set_draw_offset( i915, screen->frontOffset ); + set_draw_offset( i915, screen->front.offset ); draw_quad(i915, x0, x1, y0, y1, intel->clear_red, intel->clear_green, @@ -489,7 +489,7 @@ i915ClearWithTris(intelContextPtr intel, GLbitfield mask, if (mask & BUFFER_BIT_BACK_LEFT) { set_no_depth_stencil_write( i915 ); set_color_mask( i915, GL_TRUE ); - set_draw_offset( i915, screen->backOffset ); + set_draw_offset( i915, screen->back.offset ); draw_quad(i915, x0, x1, y0, y1, intel->clear_red, intel->clear_green, @@ -503,7 +503,7 @@ i915ClearWithTris(intelContextPtr intel, GLbitfield mask, intel->ctx.Stencil.Clear); set_color_mask( i915, GL_FALSE ); - set_draw_offset( i915, screen->frontOffset ); /* could be either? */ + set_draw_offset( i915, screen->front.offset ); /* could be either? */ draw_quad( i915, x0, x1, y0, y1, 0, 0, 0, 0, 0, 0, 0, 0 ); } diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index adb17b21873..9ba47d92e40 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -856,16 +856,16 @@ static void i915_init_packets( i915ContextPtr i915 ) i915->state.Buffer[I915_DESTREG_CBUFADDR0] = _3DSTATE_BUF_INFO_CMD; i915->state.Buffer[I915_DESTREG_CBUFADDR1] = (BUF_3D_ID_COLOR_BACK | - BUF_3D_PITCH(screen->frontPitch * screen->cpp) | + BUF_3D_PITCH(screen->front.pitch * screen->cpp) | BUF_3D_USE_FENCE); i915->state.Buffer[I915_DESTREG_DBUFADDR0] = _3DSTATE_BUF_INFO_CMD; i915->state.Buffer[I915_DESTREG_DBUFADDR1] = (BUF_3D_ID_DEPTH | - BUF_3D_PITCH(screen->depthPitch * screen->cpp) | + BUF_3D_PITCH(screen->depth.pitch * screen->cpp) | BUF_3D_USE_FENCE); - i915->state.Buffer[I915_DESTREG_DBUFADDR2] = screen->depthOffset; + i915->state.Buffer[I915_DESTREG_DBUFADDR2] = screen->depth.offset; i915->state.Buffer[I915_DESTREG_DV0] = _3DSTATE_DST_BUF_VARS_CMD; diff --git a/src/mesa/drivers/dri/i915/intel_batchbuffer.c b/src/mesa/drivers/dri/i915/intel_batchbuffer.c index 7c9ad87bed6..84ec70e2b9e 100644 --- a/src/mesa/drivers/dri/i915/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i915/intel_batchbuffer.c @@ -51,8 +51,8 @@ static void intel_fill_box( intelContextPtr intel, { intelEmitFillBlitLocked( intel, intel->intelScreen->cpp, - intel->intelScreen->backPitch, - intel->intelScreen->frontOffset, + intel->intelScreen->back.pitch, + intel->intelScreen->front.offset, x, y, w, h, INTEL_PACKCOLOR(intel->intelScreen->fbFormat, r,g,b,0xff)); @@ -338,7 +338,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv ) __DRIdrawablePrivate *dPriv = intel->driDrawable; int nbox = dPriv->numClipRects; drm_clip_rect_t *pbox = dPriv->pClipRects; - int pitch = intelScreen->frontPitch; + int pitch = intelScreen->front.pitch; int cpp = intelScreen->cpp; int i; GLuint CMD, BR13; @@ -378,17 +378,17 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv ) OUT_BATCH( (pbox->y2 << 16) | pbox->x2 ); if (intel->sarea->pf_current_page == 0) - OUT_BATCH( intelScreen->frontOffset ); + OUT_BATCH( intelScreen->front.offset ); else - OUT_BATCH( intelScreen->backOffset ); + OUT_BATCH( intelScreen->back.offset ); OUT_BATCH( (pbox->y1 << 16) | pbox->x1 ); OUT_BATCH( BR13 & 0xffff ); if (intel->sarea->pf_current_page == 0) - OUT_BATCH( intelScreen->backOffset ); + OUT_BATCH( intelScreen->back.offset ); else - OUT_BATCH( intelScreen->frontOffset ); + OUT_BATCH( intelScreen->front.offset ); ADVANCE_BATCH(); } @@ -502,7 +502,7 @@ void intelClearWithBlit(GLcontext *ctx, GLbitfield flags, GLboolean all, intelScreenPrivate *intelScreen = intel->intelScreen; GLuint clear_depth, clear_color; GLint cx, cy; - GLint pitch = intelScreen->frontPitch; + GLint pitch = intelScreen->front.pitch; GLint cpp = intelScreen->cpp; GLint i; GLuint BR13, CMD, D_CMD; @@ -596,7 +596,7 @@ void intelClearWithBlit(GLcontext *ctx, GLbitfield flags, GLboolean all, OUT_BATCH( BR13 ); OUT_BATCH( (b.y1 << 16) | b.x1 ); OUT_BATCH( (b.y2 << 16) | b.x2 ); - OUT_BATCH( intelScreen->frontOffset ); + OUT_BATCH( intelScreen->front.offset ); OUT_BATCH( clear_color ); ADVANCE_BATCH(); } @@ -607,7 +607,7 @@ void intelClearWithBlit(GLcontext *ctx, GLbitfield flags, GLboolean all, OUT_BATCH( BR13 ); OUT_BATCH( (b.y1 << 16) | b.x1 ); OUT_BATCH( (b.y2 << 16) | b.x2 ); - OUT_BATCH( intelScreen->backOffset ); + OUT_BATCH( intelScreen->back.offset ); OUT_BATCH( clear_color ); ADVANCE_BATCH(); } @@ -618,7 +618,7 @@ void intelClearWithBlit(GLcontext *ctx, GLbitfield flags, GLboolean all, OUT_BATCH( BR13 ); OUT_BATCH( (b.y1 << 16) | b.x1 ); OUT_BATCH( (b.y2 << 16) | b.x2 ); - OUT_BATCH( intelScreen->depthOffset ); + OUT_BATCH( intelScreen->depth.offset ); OUT_BATCH( clear_depth ); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i915/intel_ioctl.c b/src/mesa/drivers/dri/i915/intel_ioctl.c index 470eb315b5a..dd1e1d75870 100644 --- a/src/mesa/drivers/dri/i915/intel_ioctl.c +++ b/src/mesa/drivers/dri/i915/intel_ioctl.c @@ -558,7 +558,7 @@ GLuint intelAgpOffsetFromVirtual( intelContextPtr intel, const GLvoid *pointer ) if (offset < 0 || offset > intel->intelScreen->tex.size) return ~0; else - return intel->intelScreen->textureOffset + offset; + return intel->intelScreen->tex.offset + offset; } diff --git a/src/mesa/drivers/dri/i915/intel_pixel.c b/src/mesa/drivers/dri/i915/intel_pixel.c index 09eea5022f0..a79bed45fbe 100644 --- a/src/mesa/drivers/dri/i915/intel_pixel.c +++ b/src/mesa/drivers/dri/i915/intel_pixel.c @@ -130,7 +130,7 @@ clip_pixelrect( const GLcontext *ctx, if (*height <= 0) return GL_FALSE; - *size = ((*y + *height - 1) * intel->intelScreen->frontPitch + + *size = ((*y + *height - 1) * intel->intelScreen->front.pitch + (*x + *width - 1) * intel->intelScreen->cpp); return GL_TRUE; @@ -193,7 +193,7 @@ intelTryReadPixels( GLcontext *ctx, __DRIdrawablePrivate *dPriv = intel->driDrawable; int nbox = dPriv->numClipRects; int src_offset = intel->drawOffset; - int src_pitch = intel->intelScreen->frontPitch; + int src_pitch = intel->intelScreen->front.pitch; int dst_offset = intelAgpOffsetFromVirtual( intel, pixels); drm_clip_rect_t *box = dPriv->pClipRects; int i; @@ -318,7 +318,7 @@ static void do_draw_pix( GLcontext *ctx, intelEmitCopyBlitLocked( intel, intel->intelScreen->cpp, src_pitch, src_offset, - intel->intelScreen->frontPitch, + intel->intelScreen->front.pitch, intel->drawOffset, bx - x, by - y, bx, by, diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 2f4f083a87e..c4a2e53b3d0 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -61,13 +61,13 @@ static void intelPrintDRIInfo(intelScreenPrivate *intelScreen, I830DRIPtr gDRIPriv) { fprintf(stderr, "Front size : 0x%x\n", sPriv->fbSize); - fprintf(stderr, "Front offset : 0x%x\n", intelScreen->frontOffset); + fprintf(stderr, "Front offset : 0x%x\n", intelScreen->front.offset); fprintf(stderr, "Back size : 0x%x\n", intelScreen->back.size); - fprintf(stderr, "Back offset : 0x%x\n", intelScreen->backOffset); + fprintf(stderr, "Back offset : 0x%x\n", intelScreen->back.offset); fprintf(stderr, "Depth size : 0x%x\n", intelScreen->depth.size); - fprintf(stderr, "Depth offset : 0x%x\n", intelScreen->depthOffset); + fprintf(stderr, "Depth offset : 0x%x\n", intelScreen->depth.offset); fprintf(stderr, "Texture size : 0x%x\n", intelScreen->tex.size); - fprintf(stderr, "Texture offset : 0x%x\n", intelScreen->textureOffset); + fprintf(stderr, "Texture offset : 0x%x\n", intelScreen->tex.offset); fprintf(stderr, "Memory : 0x%x\n", gDRIPriv->mem); } @@ -102,21 +102,19 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv) intelScreen->height = gDRIPriv->height; intelScreen->mem = gDRIPriv->mem; intelScreen->cpp = gDRIPriv->cpp; - intelScreen->frontPitch = gDRIPriv->fbStride; - intelScreen->frontOffset = gDRIPriv->fbOffset; switch (gDRIPriv->bitsPerPixel) { case 15: intelScreen->fbFormat = DV_PF_555; break; case 16: intelScreen->fbFormat = DV_PF_565; break; case 32: intelScreen->fbFormat = DV_PF_8888; break; } - - intelScreen->backOffset = gDRIPriv->backOffset; - intelScreen->backPitch = gDRIPriv->backPitch; - intelScreen->depthOffset = gDRIPriv->depthOffset; - intelScreen->depthPitch = gDRIPriv->depthPitch; - intelScreen->textureOffset = gDRIPriv->textureOffset; - intelScreen->logTextureGranularity = gDRIPriv->logTextureGranularity; + + intelScreen->front.pitch = gDRIPriv->fbStride; + intelScreen->front.offset = gDRIPriv->fbOffset; + intelScreen->front.map = sPriv->pFB; + + intelScreen->back.offset = gDRIPriv->backOffset; + intelScreen->back.pitch = gDRIPriv->backPitch; intelScreen->back.handle = gDRIPriv->backbuffer; intelScreen->back.size = gDRIPriv->backbufferSize; @@ -131,6 +129,8 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv) return GL_FALSE; } + intelScreen->depth.offset = gDRIPriv->depthOffset; + intelScreen->depth.pitch = gDRIPriv->depthPitch; intelScreen->depth.handle = gDRIPriv->depthbuffer; intelScreen->depth.size = gDRIPriv->depthbufferSize; @@ -146,6 +146,8 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv) return GL_FALSE; } + intelScreen->tex.offset = gDRIPriv->textureOffset; + intelScreen->logTextureGranularity = gDRIPriv->logTextureGranularity; intelScreen->tex.handle = gDRIPriv->textures; intelScreen->tex.size = gDRIPriv->textureSize; @@ -245,7 +247,7 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv, = driNewRenderbuffer(GL_RGBA, driScrnPriv->pFB, screen->cpp, - screen->frontOffset, screen->frontPitch, + screen->front.offset, screen->front.pitch, driDrawPriv); intelSetSpanFunctions(frontRb, mesaVis); _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base); @@ -256,7 +258,7 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv, = driNewRenderbuffer(GL_RGBA, screen->back.map, screen->cpp, - screen->backOffset, screen->backPitch, + screen->back.offset, screen->back.pitch, driDrawPriv); intelSetSpanFunctions(backRb, mesaVis); _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base); @@ -267,7 +269,7 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv, = driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->depth.map, screen->cpp, - screen->depthOffset, screen->depthPitch, + screen->depth.offset, screen->depth.pitch, driDrawPriv); intelSetSpanFunctions(depthRb, mesaVis); _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base); @@ -277,7 +279,7 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv, = driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->depth.map, screen->cpp, - screen->depthOffset, screen->depthPitch, + screen->depth.offset, screen->depth.pitch, driDrawPriv); intelSetSpanFunctions(depthRb, mesaVis); _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base); @@ -288,7 +290,7 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv, = driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->depth.map, screen->cpp, - screen->depthOffset, screen->depthPitch, + screen->depth.offset, screen->depth.pitch, driDrawPriv); intelSetSpanFunctions(stencilRb, mesaVis); _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base); diff --git a/src/mesa/drivers/dri/i915/intel_screen.h b/src/mesa/drivers/dri/i915/intel_screen.h index f41d7480e36..ebecffa4cb1 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.h +++ b/src/mesa/drivers/dri/i915/intel_screen.h @@ -34,8 +34,10 @@ typedef struct { drm_handle_t handle; - drmSize size; - char *map; + drmSize size; /* region size in bytes */ + char *map; /* memory map */ + int offset; /* from start of video mem, in bytes */ + int pitch; /* row stride, in pixels */ } intelRegion; typedef struct @@ -48,24 +50,12 @@ typedef struct int deviceID; int width; int height; - int mem; - + int mem; /* unused */ + int cpp; /* for front and back buffers */ - int bitsPerPixel; - + int bitsPerPixel; /* unused */ int fbFormat; - int frontOffset; - int frontPitch; - - int backOffset; - int backPitch; - - int depthOffset; - int depthPitch; - - - int textureOffset; int logTextureGranularity; __DRIscreenPrivate *driScrnPriv; diff --git a/src/mesa/drivers/dri/i915/intel_state.c b/src/mesa/drivers/dri/i915/intel_state.c index f018f01762f..2343d061f52 100644 --- a/src/mesa/drivers/dri/i915/intel_state.c +++ b/src/mesa/drivers/dri/i915/intel_state.c @@ -193,9 +193,9 @@ static void intelDrawBuffer(GLcontext *ctx, GLenum mode ) intelSetFrontClipRects( intel ); if (front) { - intel->drawOffset = screen->frontOffset; + intel->drawOffset = screen->front.offset; } else { - intel->drawOffset = screen->backOffset; + intel->drawOffset = screen->back.offset; } intel->vtbl.set_draw_offset( intel, intel->drawOffset ); diff --git a/src/mesa/drivers/dri/i915/intel_tex.c b/src/mesa/drivers/dri/i915/intel_tex.c index ad0a2675569..396e126011f 100644 --- a/src/mesa/drivers/dri/i915/intel_tex.c +++ b/src/mesa/drivers/dri/i915/intel_tex.c @@ -749,7 +749,7 @@ int intelUploadTexImages( intelContextPtr intel, /* Set the base offset of the texture image */ t->BufAddr = intel->intelScreen->tex.map + t->base.memBlock->ofs; - t->TextureOffset = intel->intelScreen->textureOffset + t->base.memBlock->ofs; + t->TextureOffset = intel->intelScreen->tex.offset + t->base.memBlock->ofs; t->dirty = ~0; } -- 2.30.2