[intel] Simplify intelCreateBuffer() a bit.
authorKristian Høgsberg <krh@temari.boston.redhat.com>
Wed, 9 Jan 2008 21:55:32 +0000 (16:55 -0500)
committerKristian Høgsberg <krh@temari.boston.redhat.com>
Thu, 10 Jan 2008 01:43:18 +0000 (20:43 -0500)
Drop a bunch of unused arguments from intel_create_renderbuffer() and
introduce intel_renderbuffer_set_region() to set the region for
a renderbuffer.

src/mesa/drivers/dri/i915/intel_context.c
src/mesa/drivers/dri/intel/intel_fbo.c
src/mesa/drivers/dri/intel/intel_fbo.h
src/mesa/drivers/dri/intel/intel_screen.c

index 2cb57f3a9258082c7d1d2f6192ba3c704524500f..ce77b57a3e6c63c5ea257fdd5253e6055462b04b 100644 (file)
@@ -634,23 +634,23 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
          struct intel_renderbuffer *irbStencil
             = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL);
 
-         if (intel_fb->color_rb[0] && !intel_fb->color_rb[0]->region) {
-            intel_region_reference(&intel_fb->color_rb[0]->region,
-                                  intel->front_region);
+         if (intel_fb->color_rb[0]) {
+           intel_renderbuffer_set_region(intel_fb->color_rb[0],
+                                         intel->front_region);
          }
-         if (intel_fb->color_rb[1] && !intel_fb->color_rb[1]->region) {
-            intel_region_reference(&intel_fb->color_rb[1]->region,
-                                  intel->back_region);
+         if (intel_fb->color_rb[1]) {
+           intel_renderbuffer_set_region(intel_fb->color_rb[1],
+                                         intel->back_region);
          }
-         if (intel_fb->color_rb[2] && !intel_fb->color_rb[2]->region) {
-            intel_region_reference(&intel_fb->color_rb[2]->region,
-                                  intel->third_region);
+         if (intel_fb->color_rb[2]) {
+           intel_renderbuffer_set_region(intel_fb->color_rb[2],
+                                         intel->third_region);
          }
-         if (irbDepth && !irbDepth->region) {
-            intel_region_reference(&irbDepth->region, intel->depth_region);
+         if (irbDepth) {
+           intel_renderbuffer_set_region(irbDepth, intel->depth_region);
          }
-         if (irbStencil && !irbStencil->region) {
-            intel_region_reference(&irbStencil->region, intel->depth_region);
+         if (irbStencil) {
+           intel_renderbuffer_set_region(irbStencil, intel->depth_region);
          }
       }
 
index 84ac7889b2ae3715dda5a94c320cd8bdda2e12db..c430e90382f693f8320bf0c859124fe5085b3e28 100644 (file)
@@ -355,16 +355,27 @@ intel_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
 }
 
 
+void
+intel_renderbuffer_set_region(struct intel_renderbuffer *rb,
+                             struct intel_region *region)
+{
+   struct intel_region *old;
+
+   old = rb->region;
+   rb->region = NULL;
+   intel_region_reference(&rb->region, region);
+   intel_region_release(&old);
+
+   rb->pfMap = region->map;
+   rb->pfPitch = region->pitch;
+}
 
 /**
  * Create a new intel_renderbuffer which corresponds to an on-screen window,
  * not a user-created renderbuffer.
- * \param width  the screen width
- * \param height  the screen height
  */
 struct intel_renderbuffer *
-intel_create_renderbuffer(GLenum intFormat, GLsizei width, GLsizei height,
-                          int offset, int pitch, int cpp, void *map)
+intel_create_renderbuffer(GLenum intFormat)
 {
    GET_CURRENT_CONTEXT(ctx);
 
@@ -388,7 +399,6 @@ intel_create_renderbuffer(GLenum intFormat, GLsizei width, GLsizei height,
       irb->Base.GreenBits = 6;
       irb->Base.BlueBits = 5;
       irb->Base.DataType = GL_UNSIGNED_BYTE;
-      cpp = 2;
       break;
    case GL_RGBA8:
       irb->Base._ActualFormat = GL_RGBA8;
@@ -398,28 +408,24 @@ intel_create_renderbuffer(GLenum intFormat, GLsizei width, GLsizei height,
       irb->Base.BlueBits = 8;
       irb->Base.AlphaBits = 8;
       irb->Base.DataType = GL_UNSIGNED_BYTE;
-      cpp = 4;
       break;
    case GL_STENCIL_INDEX8_EXT:
       irb->Base._ActualFormat = GL_STENCIL_INDEX8_EXT;
       irb->Base._BaseFormat = GL_STENCIL_INDEX;
       irb->Base.StencilBits = 8;
       irb->Base.DataType = GL_UNSIGNED_BYTE;
-      cpp = 1;
       break;
    case GL_DEPTH_COMPONENT16:
       irb->Base._ActualFormat = GL_DEPTH_COMPONENT16;
       irb->Base._BaseFormat = GL_DEPTH_COMPONENT;
       irb->Base.DepthBits = 16;
       irb->Base.DataType = GL_UNSIGNED_SHORT;
-      cpp = 2;
       break;
    case GL_DEPTH_COMPONENT24:
       irb->Base._ActualFormat = GL_DEPTH24_STENCIL8_EXT;
       irb->Base._BaseFormat = GL_DEPTH_COMPONENT;
       irb->Base.DepthBits = 24;
       irb->Base.DataType = GL_UNSIGNED_INT;
-      cpp = 4;
       break;
    case GL_DEPTH24_STENCIL8_EXT:
       irb->Base._ActualFormat = GL_DEPTH24_STENCIL8_EXT;
@@ -427,7 +433,6 @@ intel_create_renderbuffer(GLenum intFormat, GLsizei width, GLsizei height,
       irb->Base.DepthBits = 24;
       irb->Base.StencilBits = 8;
       irb->Base.DataType = GL_UNSIGNED_INT_24_8_EXT;
-      cpp = 4;
       break;
    default:
       _mesa_problem(NULL,
@@ -444,15 +449,6 @@ intel_create_renderbuffer(GLenum intFormat, GLsizei width, GLsizei height,
    /* This sets the Get/PutRow/Value functions */
    intel_set_span_functions(&irb->Base);
 
-   irb->pfMap = map;
-   irb->pfPitch = pitch / cpp; /* in pixels */
-
-#if 00
-   irb->region = intel_region_create_static(intel,
-                                            DRM_MM_TT,
-                                            offset, map, cpp, width, height);
-#endif
-
    return irb;
 }
 
index dc017f7121de1ac31954f73fa80c000a016bc7ab..2fda7dca005ec31aa856844d6bec8b536382e5f1 100644 (file)
@@ -85,14 +85,12 @@ struct intel_renderbuffer
 extern struct intel_renderbuffer *intel_renderbuffer(struct gl_renderbuffer
                                                      *rb);
 
-extern struct intel_renderbuffer *intel_create_renderbuffer(GLenum intFormat,
-                                                            GLsizei width,
-                                                            GLsizei height,
-                                                            int offset,
-                                                            int pitch,
-                                                            int cpp,
-                                                            void *map);
+extern void
+intel_renderbuffer_set_region(struct intel_renderbuffer *irb,
+                             struct intel_region *region);
 
+extern struct intel_renderbuffer *
+intel_create_renderbuffer(GLenum intFormat);
 
 extern void intel_fbo_init(struct intel_context *intel);
 
index abeb0f9b9f0d8b48c469daf0f5c928ec76aba8f5..7708eb856400dbaa1bcfd7ab44fb9534f22f82a8 100644 (file)
@@ -429,41 +429,20 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
 
       /* setup the hardware-based renderbuffers */
       {
-         intel_fb->color_rb[0]
-            = intel_create_renderbuffer(rgbFormat,
-                                        screen->width, screen->height,
-                                        screen->front.offset,
-                                        screen->front.pitch,
-                                        screen->cpp,
-                                        screen->front.map);
-         intel_set_span_functions(&intel_fb->color_rb[0]->Base);
+         intel_fb->color_rb[0] = intel_create_renderbuffer(rgbFormat);
          _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_FRONT_LEFT,
                                &intel_fb->color_rb[0]->Base);
       }
 
       if (mesaVis->doubleBufferMode) {
-         intel_fb->color_rb[1]
-            = intel_create_renderbuffer(rgbFormat,
-                                        screen->width, screen->height,
-                                        screen->back.offset,
-                                        screen->back.pitch,
-                                        screen->cpp,
-                                        screen->back.map);
-         intel_set_span_functions(&intel_fb->color_rb[1]->Base);
+         intel_fb->color_rb[1] = intel_create_renderbuffer(rgbFormat);
          _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_BACK_LEFT,
                                &intel_fb->color_rb[1]->Base);
 
         if (screen->third.handle) {
            struct gl_renderbuffer *tmp_rb = NULL;
 
-           intel_fb->color_rb[2]
-              = intel_create_renderbuffer(rgbFormat,
-                                          screen->width, screen->height,
-                                          screen->third.offset,
-                                          screen->third.pitch,
-                                          screen->cpp,
-                                          screen->third.map);
-           intel_set_span_functions(&intel_fb->color_rb[2]->Base);
+           intel_fb->color_rb[2] = intel_create_renderbuffer(rgbFormat);
            _mesa_reference_renderbuffer(&tmp_rb, &intel_fb->color_rb[2]->Base);
         }
       }
@@ -472,13 +451,7 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
         if (mesaVis->stencilBits == 8) {
            /* combined depth/stencil buffer */
            struct intel_renderbuffer *depthStencilRb
-              = intel_create_renderbuffer(GL_DEPTH24_STENCIL8_EXT,
-                                          screen->width, screen->height,
-                                          screen->depth.offset,
-                                          screen->depth.pitch,
-                                          screen->cpp,    /* 4! */
-                                          screen->depth.map);
-           intel_set_span_functions(&depthStencilRb->Base);
+              = intel_create_renderbuffer(GL_DEPTH24_STENCIL8_EXT);
            /* note: bind RB to two attachment points */
            _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH,
                                   &depthStencilRb->Base);
@@ -486,13 +459,7 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
                                   &depthStencilRb->Base);
         } else {
            struct intel_renderbuffer *depthRb
-              = intel_create_renderbuffer(GL_DEPTH_COMPONENT24,
-                                          screen->width, screen->height,
-                                          screen->depth.offset,
-                                          screen->depth.pitch,
-                                          screen->cpp,    /* 4! */
-                                          screen->depth.map);
-           intel_set_span_functions(&depthRb->Base);
+              = intel_create_renderbuffer(GL_DEPTH_COMPONENT24);
            _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH,
                                   &depthRb->Base);
         }
@@ -500,13 +467,7 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
       else if (mesaVis->depthBits == 16) {
          /* just 16-bit depth buffer, no hw stencil */
          struct intel_renderbuffer *depthRb
-            = intel_create_renderbuffer(GL_DEPTH_COMPONENT16,
-                                        screen->width, screen->height,
-                                        screen->depth.offset,
-                                        screen->depth.pitch,
-                                        screen->cpp,    /* 2! */
-                                        screen->depth.map);
-         intel_set_span_functions(&depthRb->Base);
+            = intel_create_renderbuffer(GL_DEPTH_COMPONENT16);
          _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH, &depthRb->Base);
       }