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