Hi,
I ran into a bit of trouble compiling the r300 mesa driver. I'm using the
latest r300_driver from cvs with mesa_6_2_branch, which I presume is the
latest release. I'm compiling with gcc 3.4.0 and receive the following
message:
...
gcc -c -I. -I../../../../../src/mesa/drivers/dri/common -Iserver
-I../../../../../../drm/shared -I../../../../../../drm/linux
-I../../../../../include -I../../../../../include/GL/internal
-I../../../../../src/mesa -I../../../../../src/mesa/main
-I../../../../../src/mesa/glapi -I../../../../../src/mesa/math
-I../../../../../src/mesa/transform -I../../../../../src/mesa/shader
-I../../../../../src/mesa/swrast -I../../../../../src/mesa/swrast_setup
-I../dri_client -I../dri_client/imports -DDRI_NEW_INTERFACE_ONLY -Wall -g -O
-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -std=c99
-ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE
-D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS -I/usr/X11R6/include
-I/usr/X11R6/include/X11/extensions -DCOMPILE_R300 -DGLX_DIRECT_RENDERING
radeon_lock.c -o radeon_lock.o
radeon_lock.c: In function `radeonUpdatePageFlipping':
radeon_lock.c:56: error: subscripted value is neither array nor pointer
...
It seems to be falling over on radeon->glCtx->Color._DrawDestMask[0]. On my
machine _DrawDestMask is a GLbitfield (unsigned int). I had to use the
following patches to get it to compile correctly. Is this correct or is
there something wrong with my set up?
Thanks
Kevin
Index: r200_state.c
===================================================================
RCS file: /cvsroot/r300/r300_driver/r300/r200_state.c,v
retrieving revision 1.4
diff -u -3 -p -r1.4 r200_state.c
--- r200_state.c 19 Dec 2004 16:18:10 -0000 1.4
+++ r200_state.c 24 Dec 2004 17:34:30 -0000
@@ -1684,7 +1684,7 @@ static void r200DrawBuffer(GLcontext * c
/*
* _DrawDestMask is easier to cope with than <mode>.
*/
- switch (ctx->Color._DrawDestMask[0]) {
+ switch (ctx->Color._DrawDestMask) {
case DD_FRONT_LEFT_BIT:
FALLBACK(&r200->radeon, RADEON_FALLBACK_DRAW_BUFFER, GL_FALSE);
radeonSetCliprects(&r200->radeon, GL_FRONT_LEFT);
Index: radeon_lock.c
===================================================================
RCS file: /cvsroot/r300/r300_driver/r300/radeon_lock.c,v
retrieving revision 1.3
diff -u -3 -p -r1.3 radeon_lock.c
--- radeon_lock.c 17 Oct 2004 20:26:06 -0000 1.3
+++ radeon_lock.c 24 Dec 2004 17:32:02 -0000
@@ -53,7 +53,7 @@ static void radeonUpdatePageFlipping(rad
radeon->doPageFlip = radeon->sarea->pfState;
- use_back = (radeon->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT);
+ use_back = (radeon->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT);
use_back ^= (radeon->sarea->pfCurrentPage == 1);
if (use_back) {
@@ -82,7 +82,7 @@ static void r200RegainedLock(r200Context
r200->hw.ctx.cmd[CTX_RB3D_COLORPITCH] =
r200->radeon.state.color.drawPitch;
- if (r200->radeon.glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT)
+ if (r200->radeon.glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT)
radeonSetCliprects(&r200->radeon, GL_BACK_LEFT);
else
radeonSetCliprects(&r200->radeon, GL_FRONT_LEFT);
@@ -102,7 +102,7 @@ static void r300RegainedLock(radeonConte
if (radeon->lastStamp != dPriv->lastStamp) {
radeonUpdatePageFlipping(radeon);
- if (radeon->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT)
+ if (radeon->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT)
radeonSetCliprects(radeon, GL_BACK_LEFT);
else
radeonSetCliprects(radeon, GL_FRONT_LEFT);