On Sun, 18 Jan 2009, Owain Ainsworth wrote:

Yes, the build is having problems with dereferencing the sarea pointers.
in the following code:

 drm_clip_rect_t planeA_rect = { .x1 = sarea->planeA_x, .y1 = sarea->planeA_y,
                                 .x2 = sarea->planeA_x + sarea->planeA_w,
                                 .y2 = sarea->planeA_y + sarea->planeA_h };
 drm_clip_rect_t planeB_rect = { .x1 = sarea->planeB_x, .y1 = sarea->planeB_y,
                                 .x2 = sarea->planeB_x + sarea->planeB_w,
                                 .y2 = sarea->planeB_y + sarea->planeB_h };



My patch did not change that behaviour at all. I wonder if you're
building things correctly, I have no such problem with the sarea being
detected.

Julien Cristau found out the problem; intel_buffers.c is using 'struct drm_i915_sarea' when the kernel headers have _drm_i915_sarea, so using the typedef should work with both kernel and drm headers.. This still needs dfef24592257805af0bee42dced099459c68a307 in the kernel to add *_bo_handle to _drm_i915_sarea.

The actual patch attached.

t
Index: mesa/src/mesa/drivers/dri/intel/intel_buffers.c
===================================================================
--- mesa.orig/src/mesa/drivers/dri/intel/intel_buffers.c	2009-01-18 19:32:05.000000000 +0200
+++ mesa/src/mesa/drivers/dri/intel/intel_buffers.c	2009-01-18 19:32:05.000000000 +0200
@@ -155,7 +155,7 @@
 
    if (!intel->intelScreen->driScrnPriv->dri2.enabled &&
        intel->intelScreen->driScrnPriv->ddx_version.minor >= 7) {
-      volatile struct drm_i915_sarea *sarea = intel->sarea;
+      volatile drm_i915_sarea_t *sarea = intel->sarea;
       drm_clip_rect_t drw_rect = { .x1 = dPriv->x, .x2 = dPriv->x + dPriv->w,
 				   .y1 = dPriv->y, .y2 = dPriv->y + dPriv->h };
       drm_clip_rect_t pipeA_rect = { .x1 = sarea->pipeA_x, .y1 = sarea->pipeA_y,
Index: mesa/src/mesa/drivers/dri/intel/intel_context.c
===================================================================
--- mesa.orig/src/mesa/drivers/dri/intel/intel_context.c	2009-01-18 19:28:47.000000000 +0200
+++ mesa/src/mesa/drivers/dri/intel/intel_context.c	2009-01-18 19:32:05.000000000 +0200
@@ -886,7 +886,7 @@
 {
    __DRIdrawablePrivate *dPriv = intel->driDrawable;
    __DRIscreenPrivate *sPriv = intel->driScreen;
-   volatile struct drm_i915_sarea *sarea = intel->sarea;
+   volatile drm_i915_sarea_t *sarea = intel->sarea;
    int me = intel->hHWContext;
 
    drmGetLock(intel->driFd, intel->hHWContext, flags);
Index: mesa/src/mesa/drivers/dri/intel/intel_screen.c
===================================================================
--- mesa.orig/src/mesa/drivers/dri/intel/intel_screen.c	2009-01-18 19:32:05.000000000 +0200
+++ mesa/src/mesa/drivers/dri/intel/intel_screen.c	2009-01-18 19:32:05.000000000 +0200
@@ -134,7 +134,7 @@
 
 
 static void
-intelPrintSAREA(const struct drm_i915_sarea * sarea)
+intelPrintSAREA(const drm_i915_sarea_t * sarea)
 {
    fprintf(stderr, "SAREA: sarea width %d  height %d\n", sarea->width,
            sarea->height);
@@ -161,7 +161,7 @@
  */
 void
 intelUpdateScreenFromSAREA(intelScreenPrivate * intelScreen,
-                           struct drm_i915_sarea * sarea)
+                           drm_i915_sarea_t * sarea)
 {
    intelScreen->width = sarea->width;
    intelScreen->height = sarea->height;
@@ -244,7 +244,7 @@
 {
    intelScreenPrivate *intelScreen;
    I830DRIPtr gDRIPriv = (I830DRIPtr) sPriv->pDevPriv;
-   struct drm_i915_sarea *sarea;
+   drm_i915_sarea_t *sarea;
 
    if (sPriv->devPrivSize != sizeof(I830DRIRec)) {
       fprintf(stderr,
@@ -264,7 +264,7 @@
 
    intelScreen->driScrnPriv = sPriv;
    sPriv->private = (void *) intelScreen;
-   sarea = (struct drm_i915_sarea *)
+   sarea = (drm_i915_sarea_t *)
       (((GLubyte *) sPriv->pSAREA) + gDRIPriv->sarea_priv_offset);
    intelScreen->sarea = sarea;
 
Index: mesa/src/mesa/drivers/dri/intel/intel_screen.h
===================================================================
--- mesa.orig/src/mesa/drivers/dri/intel/intel_screen.h	2009-01-18 19:32:18.000000000 +0200
+++ mesa/src/mesa/drivers/dri/intel/intel_screen.h	2009-01-18 19:34:17.000000000 +0200
@@ -68,7 +68,7 @@
 
    __DRIscreenPrivate *driScrnPriv;
 
-   volatile struct drm_i915_sarea *sarea;
+   volatile drm_i915_sarea_t *sarea;
 
    int drmMinor;
 
@@ -94,7 +94,7 @@
 
 extern void
 intelUpdateScreenFromSAREA(intelScreenPrivate * intelScreen,
-                           struct drm_i915_sarea * sarea);
+                           drm_i915_sarea_t * sarea);
 
 extern void intelDestroyContext(__DRIcontextPrivate * driContextPriv);
 
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to