diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/dlist.c | 302 | ||||
| -rw-r--r-- | src/mesa/main/fbobject.c | 12 | ||||
| -rw-r--r-- | src/mesa/main/fog.c | 2 | ||||
| -rw-r--r-- | src/mesa/main/light.c | 8 | ||||
| -rw-r--r-- | src/mesa/shader/shader_api.c | 4 | 
5 files changed, 178 insertions, 150 deletions
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 4133f15dc7..9b68b3e116 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -683,24 +683,48 @@ translate_id(GLsizei n, GLenum type, const GLvoid * list)  /**   * Wrapper for _mesa_unpack_image() that handles pixel buffer objects. - * \todo This won't suffice when the PBO is really in VRAM/GPU memory. + * If we run out of memory, GL_OUT_OF_MEMORY will be recorded.   */  static GLvoid * -unpack_image(GLuint dimensions, GLsizei width, GLsizei height, GLsizei depth, +unpack_image(GLcontext *ctx, GLuint dimensions, +             GLsizei width, GLsizei height, GLsizei depth,               GLenum format, GLenum type, const GLvoid * pixels,               const struct gl_pixelstore_attrib *unpack)  {     if (!_mesa_is_bufferobj(unpack->BufferObj)) {        /* no PBO */ -      return _mesa_unpack_image(dimensions, width, height, depth, format, -                                type, pixels, unpack); +      GLvoid *image = _mesa_unpack_image(dimensions, width, height, depth, +                                         format, type, pixels, unpack); +      if (pixels && !image) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "display list construction"); +      } +      return image;     } -   else -      if (_mesa_validate_pbo_access -          (dimensions, unpack, width, height, depth, format, type, pixels)) { -      const GLubyte *src = ADD_POINTERS(unpack->BufferObj->Data, pixels); -      return _mesa_unpack_image(dimensions, width, height, depth, format, -                                type, src, unpack); +   else if (_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, +                                      format, type, pixels)) { +      const GLubyte *map, *src; +      GLvoid *image; + +      map = (GLubyte *) +         ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT, +                               GL_READ_ONLY_ARB, unpack->BufferObj); +      if (!map) { +         /* unable to map src buffer! */ +         _mesa_error(ctx, GL_INVALID_OPERATION, "unable to map PBO"); +         return NULL; +      } + +      src = ADD_POINTERS(map, pixels); +      image = _mesa_unpack_image(dimensions, width, height, depth, +                                 format, type, src, unpack); + +      ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT, +                              unpack->BufferObj); + +      if (!image) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "display list construction"); +      } +      return image;     }     /* bad access! */     return NULL; @@ -858,7 +882,6 @@ save_Bitmap(GLsizei width, GLsizei height,              GLfloat xmove, GLfloat ymove, const GLubyte * pixels)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = _mesa_unpack_bitmap(width, height, pixels, &ctx->Unpack);     Node *n;     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);     n = ALLOC_INSTRUCTION(ctx, OPCODE_BITMAP, 7); @@ -869,10 +892,7 @@ save_Bitmap(GLsizei width, GLsizei height,        n[4].f = yorig;        n[5].f = xmove;        n[6].f = ymove; -      n[7].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[7].data = _mesa_unpack_bitmap(width, height, pixels, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_Bitmap(ctx->Exec, (width, height, @@ -999,7 +1019,7 @@ _mesa_save_CallList(GLuint list)  void GLAPIENTRY -_mesa_save_CallLists(GLsizei n, GLenum type, const GLvoid * lists) +_mesa_save_CallLists(GLsizei num, GLenum type, const GLvoid * lists)  {     GET_CURRENT_CONTEXT(ctx);     GLint i; @@ -1024,7 +1044,7 @@ _mesa_save_CallLists(GLsizei n, GLenum type, const GLvoid * lists)        typeErrorFlag = GL_TRUE;     } -   for (i = 0; i < n; i++) { +   for (i = 0; i < num; i++) {        GLint list = translate_id(i, type, lists);        Node *n = ALLOC_INSTRUCTION(ctx, OPCODE_CALL_LIST_OFFSET, 2);        if (n) { @@ -1039,7 +1059,7 @@ _mesa_save_CallLists(GLsizei n, GLenum type, const GLvoid * lists)     invalidate_saved_current_state( ctx );     if (ctx->ExecuteFlag) { -      CALL_CallLists(ctx->Exec, (n, type, lists)); +      CALL_CallLists(ctx->Exec, (num, type, lists));     }  } @@ -1217,8 +1237,6 @@ save_ColorTable(GLenum target, GLenum internalFormat,                                    format, type, table));     }     else { -      GLvoid *image = unpack_image(1, width, 1, 1, format, type, table, -                                   &ctx->Unpack);        Node *n;        ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);        n = ALLOC_INSTRUCTION(ctx, OPCODE_COLOR_TABLE, 6); @@ -1228,10 +1246,8 @@ save_ColorTable(GLenum target, GLenum internalFormat,           n[3].i = width;           n[4].e = format;           n[5].e = type; -         n[6].data = image; -      } -      else if (image) { -         _mesa_free(image); +         n[6].data = unpack_image(ctx, 1, width, 1, 1, format, type, table, +                                  &ctx->Unpack);        }        if (ctx->ExecuteFlag) {           CALL_ColorTable(ctx->Exec, (target, internalFormat, width, @@ -1307,8 +1323,6 @@ save_ColorSubTable(GLenum target, GLsizei start, GLsizei count,                     GLenum format, GLenum type, const GLvoid * table)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = unpack_image(1, count, 1, 1, format, type, table, -                                &ctx->Unpack);     Node *n;     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);     n = ALLOC_INSTRUCTION(ctx, OPCODE_COLOR_SUB_TABLE, 6); @@ -1318,10 +1332,8 @@ save_ColorSubTable(GLenum target, GLsizei start, GLsizei count,        n[3].i = count;        n[4].e = format;        n[5].e = type; -      n[6].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[6].data = unpack_image(ctx, 1, count, 1, 1, format, type, table, +                               &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_ColorSubTable(ctx->Exec, @@ -1379,10 +1391,10 @@ save_ConvolutionFilter1D(GLenum target, GLenum internalFormat, GLsizei width,                           GLenum format, GLenum type, const GLvoid * filter)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = unpack_image(1, width, 1, 1, format, type, filter, -                                &ctx->Unpack);     Node *n; +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_CONVOLUTION_FILTER_1D, 6);     if (n) {        n[1].e = target; @@ -1390,10 +1402,8 @@ save_ConvolutionFilter1D(GLenum target, GLenum internalFormat, GLsizei width,        n[3].i = width;        n[4].e = format;        n[5].e = type; -      n[6].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[6].data = unpack_image(ctx, 1, width, 1, 1, format, type, filter, +                               &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_ConvolutionFilter1D(ctx->Exec, (target, internalFormat, width, @@ -1408,10 +1418,10 @@ save_ConvolutionFilter2D(GLenum target, GLenum internalFormat,                           GLenum type, const GLvoid * filter)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = unpack_image(2, width, height, 1, format, type, filter, -                                &ctx->Unpack);     Node *n; +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_CONVOLUTION_FILTER_2D, 7);     if (n) {        n[1].e = target; @@ -1420,10 +1430,8 @@ save_ConvolutionFilter2D(GLenum target, GLenum internalFormat,        n[4].i = height;        n[5].e = format;        n[6].e = type; -      n[7].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[7].data = unpack_image(ctx, 2, width, height, 1, format, type, filter, +                               &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_ConvolutionFilter2D(ctx->Exec, @@ -1778,20 +1786,18 @@ save_DrawPixels(GLsizei width, GLsizei height,                  GLenum format, GLenum type, const GLvoid * pixels)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = unpack_image(2, width, height, 1, format, type, -                                pixels, &ctx->Unpack);     Node *n; +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_DRAW_PIXELS, 5);     if (n) {        n[1].i = width;        n[2].i = height;        n[3].e = format;        n[4].e = type; -      n[5].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[5].data = unpack_image(ctx, 2, width, height, 1, format, type, +                               pixels, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_DrawPixels(ctx->Exec, (width, height, format, type, pixels)); @@ -1880,7 +1886,10 @@ save_Fogfv(GLenum pname, const GLfloat *params)  static void GLAPIENTRY  save_Fogf(GLenum pname, GLfloat param)  { -   save_Fogfv(pname, ¶m); +   GLfloat parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_Fogfv(pname, parray);  } @@ -1904,7 +1913,7 @@ save_Fogiv(GLenum pname, const GLint *params)        break;     default:        /* Error will be caught later in gl_Fogfv */ -      ; +      ASSIGN_4V(p, 0.0F, 0.0F, 0.0F, 0.0F);     }     save_Fogfv(pname, p);  } @@ -1913,7 +1922,10 @@ save_Fogiv(GLenum pname, const GLint *params)  static void GLAPIENTRY  save_Fogi(GLenum pname, GLint param)  { -   save_Fogiv(pname, ¶m); +   GLint parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0; +   save_Fogiv(pname, parray);  } @@ -2077,9 +2089,12 @@ save_Lightfv(GLenum light, GLenum pname, const GLfloat *params)  static void GLAPIENTRY -save_Lightf(GLenum light, GLenum pname, GLfloat params) +save_Lightf(GLenum light, GLenum pname, GLfloat param)  { -   save_Lightfv(light, pname, ¶ms); +   GLfloat parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_Lightfv(light, pname, parray);  } @@ -2125,7 +2140,10 @@ save_Lightiv(GLenum light, GLenum pname, const GLint *params)  static void GLAPIENTRY  save_Lighti(GLenum light, GLenum pname, GLint param)  { -   save_Lightiv(light, pname, ¶m); +   GLint parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0; +   save_Lightiv(light, pname, parray);  } @@ -2152,7 +2170,10 @@ save_LightModelfv(GLenum pname, const GLfloat *params)  static void GLAPIENTRY  save_LightModelf(GLenum pname, GLfloat param)  { -   save_LightModelfv(pname, ¶m); +   GLfloat parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_LightModelfv(pname, parray);  } @@ -2174,7 +2195,7 @@ save_LightModeliv(GLenum pname, const GLint *params)        break;     default:        /* Error will be caught later in gl_LightModelfv */ -      ; +      ASSIGN_4V(fparam, 0.0F, 0.0F, 0.0F, 0.0F);     }     save_LightModelfv(pname, fparam);  } @@ -2183,7 +2204,10 @@ save_LightModeliv(GLenum pname, const GLint *params)  static void GLAPIENTRY  save_LightModeli(GLenum pname, GLint param)  { -   save_LightModeliv(pname, ¶m); +   GLint parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0; +   save_LightModeliv(pname, parray);  } @@ -2698,21 +2722,28 @@ save_PointParameterfvEXT(GLenum pname, const GLfloat *params)  static void GLAPIENTRY  save_PointParameterfEXT(GLenum pname, GLfloat param)  { -   save_PointParameterfvEXT(pname, ¶m); +   GLfloat parray[3]; +   parray[0] = param; +   parray[1] = parray[2] = 0.0F; +   save_PointParameterfvEXT(pname, parray);  }  static void GLAPIENTRY  save_PointParameteriNV(GLenum pname, GLint param)  { -   GLfloat p = (GLfloat) param; -   save_PointParameterfvEXT(pname, &p); +   GLfloat parray[3]; +   parray[0] = (GLfloat) param; +   parray[1] = parray[2] = 0.0F; +   save_PointParameterfvEXT(pname, parray);  }  static void GLAPIENTRY  save_PointParameterivNV(GLenum pname, const GLint * param)  { -   GLfloat p = (GLfloat) param[0]; -   save_PointParameterfvEXT(pname, &p); +   GLfloat parray[3]; +   parray[0] = (GLfloat) param[0]; +   parray[1] = parray[2] = 0.0F; +   save_PointParameterfvEXT(pname, parray);  } @@ -2753,16 +2784,14 @@ static void GLAPIENTRY  save_PolygonStipple(const GLubyte * pattern)  {     GET_CURRENT_CONTEXT(ctx); -   GLvoid *image = unpack_image(2, 32, 32, 1, GL_COLOR_INDEX, GL_BITMAP, -                                pattern, &ctx->Unpack);     Node *n; +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_POLYGON_STIPPLE, 1);     if (n) { -      n[1].data = image;  -   } -   else if (image) { -      _mesa_free(image); +      n[1].data = unpack_image(ctx, 2, 32, 32, 1, GL_COLOR_INDEX, GL_BITMAP, +                               pattern, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_PolygonStipple(ctx->Exec, ((GLubyte *) pattern)); @@ -3386,7 +3415,10 @@ save_TexEnvfv(GLenum target, GLenum pname, const GLfloat *params)  static void GLAPIENTRY  save_TexEnvf(GLenum target, GLenum pname, GLfloat param)  { -   save_TexEnvfv(target, pname, ¶m); +   GLfloat parray[4]; +   parray[0] = (GLfloat) param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_TexEnvfv(target, pname, parray);  } @@ -3454,8 +3486,10 @@ save_TexGeniv(GLenum coord, GLenum pname, const GLint *params)  static void GLAPIENTRY  save_TexGend(GLenum coord, GLenum pname, GLdouble param)  { -   GLfloat p = (GLfloat) param; -   save_TexGenfv(coord, pname, &p); +   GLfloat parray[4]; +   parray[0] = (GLfloat) param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_TexGenfv(coord, pname, parray);  } @@ -3474,14 +3508,20 @@ save_TexGendv(GLenum coord, GLenum pname, const GLdouble *params)  static void GLAPIENTRY  save_TexGenf(GLenum coord, GLenum pname, GLfloat param)  { -   save_TexGenfv(coord, pname, ¶m); +   GLfloat parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_TexGenfv(coord, pname, parray);  }  static void GLAPIENTRY  save_TexGeni(GLenum coord, GLenum pname, GLint param)  { -   save_TexGeniv(coord, pname, ¶m); +   GLint parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0; +   save_TexGeniv(coord, pname, parray);  } @@ -3509,7 +3549,10 @@ save_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)  static void GLAPIENTRY  save_TexParameterf(GLenum target, GLenum pname, GLfloat param)  { -   save_TexParameterfv(target, pname, ¶m); +   GLfloat parray[4]; +   parray[0] = param; +   parray[1] = parray[2] = parray[3] = 0.0F; +   save_TexParameterfv(target, pname, parray);  } @@ -3546,8 +3589,6 @@ save_TexImage1D(GLenum target,                                    border, format, type, pixels));     }     else { -      GLvoid *image = unpack_image(1, width, 1, 1, format, type, -                                   pixels, &ctx->Unpack);        Node *n;        ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);        n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_IMAGE1D, 8); @@ -3559,10 +3600,8 @@ save_TexImage1D(GLenum target,           n[5].i = border;           n[6].e = format;           n[7].e = type; -         n[8].data = image; -      } -      else if (image) { -         _mesa_free(image); +         n[8].data = unpack_image(ctx, 1, width, 1, 1, format, type, +                                  pixels, &ctx->Unpack);        }        if (ctx->ExecuteFlag) {           CALL_TexImage1D(ctx->Exec, (target, level, components, width, @@ -3585,8 +3624,6 @@ save_TexImage2D(GLenum target,                                    height, border, format, type, pixels));     }     else { -      GLvoid *image = unpack_image(2, width, height, 1, format, type, -                                   pixels, &ctx->Unpack);        Node *n;        ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);        n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_IMAGE2D, 9); @@ -3599,10 +3636,8 @@ save_TexImage2D(GLenum target,           n[6].i = border;           n[7].e = format;           n[8].e = type; -         n[9].data = image; -      } -      else if (image) { -         _mesa_free(image); +         n[9].data = unpack_image(ctx, 2, width, height, 1, format, type, +                                  pixels, &ctx->Unpack);        }        if (ctx->ExecuteFlag) {           CALL_TexImage2D(ctx->Exec, (target, level, components, width, @@ -3628,8 +3663,6 @@ save_TexImage3D(GLenum target,     }     else {        Node *n; -      GLvoid *image = unpack_image(3, width, height, depth, format, type, -                                   pixels, &ctx->Unpack);        ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);        n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_IMAGE3D, 10);        if (n) { @@ -3642,10 +3675,8 @@ save_TexImage3D(GLenum target,           n[7].i = border;           n[8].e = format;           n[9].e = type; -         n[10].data = image; -      } -      else if (image) { -         _mesa_free(image); +         n[10].data = unpack_image(ctx, 3, width, height, depth, format, type, +                                   pixels, &ctx->Unpack);        }        if (ctx->ExecuteFlag) {           CALL_TexImage3D(ctx->Exec, (target, level, internalFormat, width, @@ -3663,9 +3694,9 @@ save_TexSubImage1D(GLenum target, GLint level, GLint xoffset,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLvoid *image = unpack_image(1, width, 1, 1, format, type, -                                pixels, &ctx->Unpack); +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_SUB_IMAGE1D, 7);     if (n) {        n[1].e = target; @@ -3674,10 +3705,8 @@ save_TexSubImage1D(GLenum target, GLint level, GLint xoffset,        n[4].i = (GLint) width;        n[5].e = format;        n[6].e = type; -      n[7].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[7].data = unpack_image(ctx, 1, width, 1, 1, format, type, +                               pixels, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_TexSubImage1D(ctx->Exec, (target, level, xoffset, width, @@ -3694,9 +3723,9 @@ save_TexSubImage2D(GLenum target, GLint level,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLvoid *image = unpack_image(2, width, height, 1, format, type, -                                pixels, &ctx->Unpack); +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_SUB_IMAGE2D, 9);     if (n) {        n[1].e = target; @@ -3707,10 +3736,8 @@ save_TexSubImage2D(GLenum target, GLint level,        n[6].i = (GLint) height;        n[7].e = format;        n[8].e = type; -      n[9].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[9].data = unpack_image(ctx, 2, width, height, 1, format, type, +                               pixels, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_TexSubImage2D(ctx->Exec, (target, level, xoffset, yoffset, @@ -3727,9 +3754,9 @@ save_TexSubImage3D(GLenum target, GLint level,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLvoid *image = unpack_image(3, width, height, depth, format, type, -                                pixels, &ctx->Unpack); +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_TEX_SUB_IMAGE3D, 11);     if (n) {        n[1].e = target; @@ -3742,10 +3769,8 @@ save_TexSubImage3D(GLenum target, GLint level,        n[8].i = (GLint) depth;        n[9].e = format;        n[10].e = type; -      n[11].data = image; -   } -   else if (image) { -      _mesa_free(image); +      n[11].data = unpack_image(ctx, 3, width, height, depth, format, type, +                                pixels, &ctx->Unpack);     }     if (ctx->ExecuteFlag) {        CALL_TexSubImage3D(ctx->Exec, (target, level, @@ -4458,18 +4483,17 @@ save_LoadProgramNV(GLenum target, GLuint id, GLsizei len,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLubyte *programCopy; - -   programCopy = (GLubyte *) _mesa_malloc(len); -   if (!programCopy) { -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glLoadProgramNV"); -      return; -   } -   _mesa_memcpy(programCopy, program, len);     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_LOAD_PROGRAM_NV, 4);     if (n) { +      GLubyte *programCopy = (GLubyte *) _mesa_malloc(len); +      if (!programCopy) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "glLoadProgramNV"); +         return; +      } +      _mesa_memcpy(programCopy, program, len);        n[1].e = target;        n[2].ui = id;        n[3].i = len; @@ -4486,15 +4510,17 @@ save_RequestResidentProgramsNV(GLsizei num, const GLuint * ids)  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLuint *idCopy = (GLuint *) _mesa_malloc(num * sizeof(GLuint)); -   if (!idCopy) { -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glRequestResidentProgramsNV"); -      return; -   } -   _mesa_memcpy(idCopy, ids, num * sizeof(GLuint)); +     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_TRACK_MATRIX_NV, 2);     if (n) { +      GLuint *idCopy = (GLuint *) _mesa_malloc(num * sizeof(GLuint)); +      if (!idCopy) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "glRequestResidentProgramsNV"); +         return; +      } +      _mesa_memcpy(idCopy, ids, num * sizeof(GLuint));        n[1].i = num;        n[2].data = idCopy;     } @@ -4655,16 +4681,17 @@ save_ProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLubyte *nameCopy = (GLubyte *) _mesa_malloc(len); -   if (!nameCopy) { -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramNamedParameter4fNV"); -      return; -   } -   _mesa_memcpy(nameCopy, name, len);     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_PROGRAM_NAMED_PARAMETER_NV, 6);     if (n) { +      GLubyte *nameCopy = (GLubyte *) _mesa_malloc(len); +      if (!nameCopy) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramNamedParameter4fNV"); +         return; +      } +      _mesa_memcpy(nameCopy, name, len);        n[1].ui = id;        n[2].i = len;        n[3].data = nameCopy; @@ -4753,18 +4780,17 @@ save_ProgramStringARB(GLenum target, GLenum format, GLsizei len,  {     GET_CURRENT_CONTEXT(ctx);     Node *n; -   GLubyte *programCopy; - -   programCopy = (GLubyte *) _mesa_malloc(len); -   if (!programCopy) { -      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramStringARB"); -      return; -   } -   _mesa_memcpy(programCopy, string, len);     ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); +     n = ALLOC_INSTRUCTION(ctx, OPCODE_PROGRAM_STRING_ARB, 4);     if (n) { +      GLubyte *programCopy = (GLubyte *) _mesa_malloc(len); +      if (!programCopy) { +         _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramStringARB"); +         return; +      } +      _mesa_memcpy(programCopy, string, len);        n[1].e = target;        n[2].e = format;        n[3].i = len; diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index ab91fbc4de..825a23090b 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -417,21 +417,22 @@ test_attachment_completeness(const GLcontext *ctx, GLenum format,        if (format == GL_COLOR) {           if (att->Renderbuffer->_BaseFormat != GL_RGB &&               att->Renderbuffer->_BaseFormat != GL_RGBA) { -            ASSERT(att->Renderbuffer->RedBits); -            ASSERT(att->Renderbuffer->GreenBits); -            ASSERT(att->Renderbuffer->BlueBits);              att_incomplete("bad renderbuffer color format");              att->Complete = GL_FALSE;              return;           } +         ASSERT(att->Renderbuffer->RedBits); +         ASSERT(att->Renderbuffer->GreenBits); +         ASSERT(att->Renderbuffer->BlueBits);        }        else if (format == GL_DEPTH) { -         ASSERT(att->Renderbuffer->DepthBits);           if (att->Renderbuffer->_BaseFormat == GL_DEPTH_COMPONENT) { +            ASSERT(att->Renderbuffer->DepthBits);              /* OK */           }           else if (ctx->Extensions.EXT_packed_depth_stencil &&                    att->Renderbuffer->_BaseFormat == GL_DEPTH_STENCIL_EXT) { +            ASSERT(att->Renderbuffer->DepthBits);              /* OK */           }           else { @@ -442,12 +443,13 @@ test_attachment_completeness(const GLcontext *ctx, GLenum format,        }        else {           assert(format == GL_STENCIL); -         ASSERT(att->Renderbuffer->StencilBits);           if (att->Renderbuffer->_BaseFormat == GL_STENCIL_INDEX) { +            ASSERT(att->Renderbuffer->StencilBits);              /* OK */           }           else if (ctx->Extensions.EXT_packed_depth_stencil &&                    att->Renderbuffer->_BaseFormat == GL_DEPTH_STENCIL_EXT) { +            ASSERT(att->Renderbuffer->StencilBits);              /* OK */           }           else { diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index 50a61bd84b..4323d3db82 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -67,7 +67,7 @@ _mesa_Fogiv(GLenum pname, const GLint *params )  	 break;        default:           /* Error will be caught later in _mesa_Fogfv */ -         ; +         ASSIGN_4V(p, 0.0F, 0.0F, 0.0F, 0.0F);     }     _mesa_Fogfv(pname, p);  } diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c index 0f0d831fee..10c89f4368 100644 --- a/src/mesa/main/light.c +++ b/src/mesa/main/light.c @@ -528,7 +528,7 @@ _mesa_LightModeliv( GLenum pname, const GLint *params )           break;        default:           /* Error will be caught later in gl_LightModelfv */ -         ; +         ASSIGN_4V(fparam, 0.0F, 0.0F, 0.0F, 0.0F);     }     _mesa_LightModelfv( pname, fparam );  } @@ -1256,15 +1256,15 @@ _mesa_update_tnl_spaces( GLcontext *ctx, GLuint new_state )  	 ctx->Driver.LightingSpaceChange( ctx );     }     else { -      GLuint new_state = ctx->NewState; +      GLuint new_state2 = ctx->NewState;        /* Recalculate that same state only if it has been invalidated         * by other statechanges.         */ -      if (new_state & _NEW_MODELVIEW) +      if (new_state2 & _NEW_MODELVIEW)  	 update_modelview_scale(ctx); -      if (new_state & (_NEW_LIGHT|_NEW_MODELVIEW)) +      if (new_state2 & (_NEW_LIGHT|_NEW_MODELVIEW))  	 compute_light_positions( ctx );     }  } diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 9cfc6dd81c..cf0a902389 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -885,7 +885,7 @@ _mesa_get_active_attrib(GLcontext *ctx, GLuint program, GLuint index,  static struct gl_program_parameter *  get_uniform_parameter(const struct gl_shader_program *shProg, GLuint index)  { -   const struct gl_program *prog; +   const struct gl_program *prog = NULL;     GLint progPos;     progPos = shProg->Uniforms->Uniforms[index].VertPos; @@ -915,7 +915,7 @@ _mesa_get_active_uniform(GLcontext *ctx, GLuint program, GLuint index,                           GLenum *type, GLchar *nameOut)  {     const struct gl_shader_program *shProg; -   const struct gl_program *prog; +   const struct gl_program *prog = NULL;     const struct gl_program_parameter *param;     GLint progPos;  | 
