Mesa (master): i965: Drop region usage from DRI2 winsys-allocated buffers.

Eric Anholt anholt at kemper.freedesktop.org
Thu May 1 22:16:54 UTC 2014


Module: Mesa
Branch: master
Commit: 3278f96a5231daef2a3f1a57b8f657ae6a96a6ff
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3278f96a5231daef2a3f1a57b8f657ae6a96a6ff

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Apr 25 13:44:41 2014 -0700

i965: Drop region usage from DRI2 winsys-allocated buffers.

v2: Fix bad pointer on unreference (caught by Chad)

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

---

 src/mesa/drivers/dri/i965/intel_screen.c |   30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index f3daad0..f7394ae 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -1376,7 +1376,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
 
 struct intel_buffer {
    __DRIbuffer base;
-   struct intel_region *region;
+   drm_intel_bo *bo;
 };
 
 static __DRIbuffer *
@@ -1395,23 +1395,27 @@ intelAllocateBuffer(__DRIscreen *screen,
       return NULL;
 
    /* The front and back buffers are color buffers, which are X tiled. */
-   intelBuffer->region = intel_region_alloc(intelScreen,
-                                            I915_TILING_X,
-                                            format / 8,
-                                            width,
-                                            height,
-                                            true);
-
-   if (intelBuffer->region == NULL) {
+   uint32_t tiling = I915_TILING_X;
+   unsigned long pitch;
+   int cpp = format / 8;
+   intelBuffer->bo = drm_intel_bo_alloc_tiled(intelScreen->bufmgr,
+                                              "intelAllocateBuffer",
+                                              width,
+                                              height,
+                                              cpp,
+                                              &tiling, &pitch,
+                                              BO_ALLOC_FOR_RENDER);
+
+   if (intelBuffer->bo == NULL) {
 	   free(intelBuffer);
 	   return NULL;
    }
 
-   drm_intel_bo_flink(intelBuffer->region->bo, &intelBuffer->base.name);
+   drm_intel_bo_flink(intelBuffer->bo, &intelBuffer->base.name);
 
    intelBuffer->base.attachment = attachment;
-   intelBuffer->base.cpp = intelBuffer->region->cpp;
-   intelBuffer->base.pitch = intelBuffer->region->pitch;
+   intelBuffer->base.cpp = cpp;
+   intelBuffer->base.pitch = pitch;
 
    return &intelBuffer->base;
 }
@@ -1421,7 +1425,7 @@ intelReleaseBuffer(__DRIscreen *screen, __DRIbuffer *buffer)
 {
    struct intel_buffer *intelBuffer = (struct intel_buffer *) buffer;
 
-   intel_region_release(&intelBuffer->region);
+   drm_intel_bo_unreference(intelBuffer->bo);
    free(intelBuffer);
 }
 




More information about the mesa-commit mailing list