Я пытаюсь скомпилировать X11R6-7.0 под Ubuntu Maverick и получил несколько странных ошибок компиляции, которые не могу решить самостоятельно.
Мне понадобился X11R6-7.0, поскольку драйверы ati Catalyst не поддерживают новые версии xorg, а драйверы oss не поддерживают 3D-ускорение моего оборудования.
Кто-нибудь знает, что означает это сообщение об ошибке? Я немного знаю C, но немного запутался. Означает ли это, что макрос GET_FB_DATA
вернул NULL
или какой-то метод/свойство не установлено?
Любое дальнейшее понимание того, как «отлаживать» определения препроцессора на этом этапе, было бы здорово. Я не думаю, что смогу напечатать что-нибудь полезное с помощью #error
.
Ошибка, которую я получаю:
tdfx_span.c: В функции 'tdfxDDWriteDepthPixels':
tdfx_span.c:976: ошибка: lvalue требуется в качестве левого операнда присваивания
tdfx_span.c:1008: ошибка: lvalue требуется в качестве левого операнда присваивания
tdfx_span .c: В функции 'write_stencil_pixels':
tdfx_span.c:1242: ошибка: в качестве левого операнда присваивания требуется lvalue
код:
958- switch (depth_size) {
959- case 16:
960- GetBackBufferInfo(fxMesa, &backBufferInfo);
961- /*
962- * Note that the _LOCK macro adds a curly brace,
963- * and the UNLOCK macro removes it.
964- */
965- WRITE_FB_SPAN_LOCK(fxMesa, info,
966- GR_BUFFER_AUXBUFFER, GR_LFBWRITEMODE_ANY);
967- {
968- LFBParameters ReadParams;
969- GetFbParams(fxMesa, &info, &backBufferInfo,
970- &ReadParams, sizeof(GLushort));
971- for (i = 0; i < n; i++) {
972- if (mask[i] && visible_pixel(fxMesa, x[i], y[i])) {
973- xpos = x[i] + fxMesa->x_offset;
974- ypos = bottom - y[i];
975- d16 = depth[i];
976: PUT_FB_DATA(&ReadParams, GLushort, xpos, ypos, d16);
977- }
978- }
979- }
980- WRITE_FB_SPAN_UNLOCK(fxMesa, GR_BUFFER_AUXBUFFER);
981- break;
982- case 24:
И относительные макросы:
#define GET_FB_DATA(ReadParamsp, type, x, y) \
(((x) < (ReadParamsp)->firstWrappedX) \
? (((type *)((ReadParamsp)->lfbPtr)) \
[(y) * ((ReadParamsp)->LFBStrideInElts) \
+ (x)]) \
: (((type *)((ReadParamsp)->lfbWrapPtr)) \
[((y)) * ((ReadParamsp)->LFBStrideInElts) \
+ ((x) - (ReadParamsp)->firstWrappedX)]))
#define GET_ORDINARY_FB_DATA(ReadParamsp, type, x, y) \
(((type *)((ReadParamsp)->lfbPtr)) \
[(y) * ((ReadParamsp)->LFBStrideInElts) \
+ (x)])
#define GET_WRAPPED_FB_DATA(ReadParamsp, type, x, y) \
(((type *)((ReadParamsp)->lfbWrapPtr)) \
[((y)) * ((ReadParamsp)->LFBStrideInElts) \
+ ((x) - (ReadParamsp)->firstWrappedX)])
#define PUT_FB_DATA(ReadParamsp, type, x, y, value) \
(GET_FB_DATA(ReadParamsp, type, x, y) = (type)(value))
#define PUT_ORDINARY_FB_DATA(ReadParamsp, type, x, y, value) \
(GET_ORDINARY_FB_DATA(ReadParamsp, type, x, y) = (type)(value))
#define PUT_WRAPPED_FB_DATA(ReadParamsp, type, x, y, value) \
(GET_WRAPPED_FB_DATA(ReadParamsp, type, x, y) = (type)(value))
Структура параметров LFB
483-typedef struct
484-{
485- void *lfbPtr;
486- void *lfbWrapPtr;
487- FxU32 LFBStrideInElts;
488- GLint firstWrappedX;
489-}
490:LFBParameters;