mesa: use new combined PBO validate/map helpers
This commit is contained in:
@@ -179,21 +179,12 @@ store_colortable_entries(GLcontext *ctx, struct gl_color_table *table,
|
||||
GLfloat bScale, GLfloat bBias,
|
||||
GLfloat aScale, GLfloat aBias)
|
||||
{
|
||||
if (!_mesa_validate_pbo_access(1, &ctx->Unpack, count, 1, 1,
|
||||
format, type, data)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glColor[Sub]Table(bad PBO access)");
|
||||
data = _mesa_map_validate_pbo_source(ctx,
|
||||
1, &ctx->Unpack, count, 1, 1,
|
||||
format, type, data,
|
||||
"glColor[Sub]Table");
|
||||
if (!data)
|
||||
return;
|
||||
}
|
||||
|
||||
data = _mesa_map_pbo_source(ctx, &ctx->Unpack, data);
|
||||
if (!data) {
|
||||
if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glColor[Sub]Table(PBO mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
/* convert user-provided data to GLfloat values */
|
||||
@@ -688,22 +679,12 @@ _mesa_GetColorTable( GLenum target, GLenum format,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_validate_pbo_access(1, &ctx->Pack, table->Size, 1, 1,
|
||||
format, type, data)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetColorTable(invalid PBO access)");
|
||||
data = _mesa_map_validate_pbo_dest(ctx,
|
||||
1, &ctx->Pack, table->Size, 1, 1,
|
||||
format, type, data,
|
||||
"glGetColorTable");
|
||||
if (!data)
|
||||
return;
|
||||
}
|
||||
|
||||
data = _mesa_map_pbo_dest(ctx, &ctx->Pack, data);
|
||||
if (!data) {
|
||||
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
|
||||
/* buffer is already mapped - that's an error */
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetColorTable(PBO is mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_pack_rgba_span_float(ctx, table->Size, rgba,
|
||||
format, type, data, &ctx->Pack, 0x0);
|
||||
|
@@ -144,21 +144,12 @@ _mesa_ConvolutionFilter1D(GLenum target, GLenum internalFormat, GLsizei width, G
|
||||
ctx->Convolution1D.Width = width;
|
||||
ctx->Convolution1D.Height = 1;
|
||||
|
||||
if (!_mesa_validate_pbo_access(1, &ctx->Unpack, width, 1, 1,
|
||||
format, type, image)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glConvolutionFilter1D(invalid PBO access)");
|
||||
image = _mesa_map_validate_pbo_source(ctx,
|
||||
1, &ctx->Unpack, width, 1, 1,
|
||||
format, type, image,
|
||||
"glConvolutionFilter1D");
|
||||
if (!image)
|
||||
return;
|
||||
}
|
||||
|
||||
image = _mesa_map_pbo_source(ctx, &ctx->Unpack, image);
|
||||
if (!image) {
|
||||
if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glConvolutionFilter1D(PBO is mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_unpack_color_span_float(ctx, width, GL_RGBA,
|
||||
ctx->Convolution1D.Filter,
|
||||
@@ -231,21 +222,12 @@ _mesa_ConvolutionFilter2D(GLenum target, GLenum internalFormat, GLsizei width, G
|
||||
ctx->Convolution2D.Width = width;
|
||||
ctx->Convolution2D.Height = height;
|
||||
|
||||
if (!_mesa_validate_pbo_access(2, &ctx->Unpack, width, height, 1,
|
||||
format, type, image)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glConvolutionFilter2D(invalid PBO access)");
|
||||
image = _mesa_map_validate_pbo_source(ctx,
|
||||
2, &ctx->Unpack, width, height, 1,
|
||||
format, type, image,
|
||||
"glConvolutionFilter2D");
|
||||
if (!image)
|
||||
return;
|
||||
}
|
||||
|
||||
image = _mesa_map_pbo_source(ctx, &ctx->Unpack, image);
|
||||
if (!image) {
|
||||
if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glConvolutionFilter2D(PBO is mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Unpack filter image. We always store filters in RGBA format. */
|
||||
for (i = 0; i < height; i++) {
|
||||
@@ -576,22 +558,12 @@ _mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_validate_pbo_access(2, &ctx->Pack,
|
||||
filter->Width, filter->Height,
|
||||
1, format, type, image)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetConvolutionFilter(invalid PBO access)");
|
||||
image = _mesa_map_validate_pbo_dest(ctx, 2, &ctx->Pack,
|
||||
filter->Width, filter->Height, 1,
|
||||
format, type, image,
|
||||
"glGetConvolutionFilter");
|
||||
if (!image)
|
||||
return;
|
||||
}
|
||||
|
||||
image = _mesa_map_pbo_dest(ctx, &ctx->Pack, image);
|
||||
if (!image) {
|
||||
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetConvolutionFilter(PBO is mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for (row = 0; row < filter->Height; row++) {
|
||||
GLvoid *dst = _mesa_image_address2d(&ctx->Pack, image, filter->Width,
|
||||
|
@@ -649,21 +649,11 @@ _mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvo
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_validate_pbo_access(1, &ctx->Pack, 2, 1, 1,
|
||||
format, type, values)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetMinMax(invalid PBO access)");
|
||||
return;
|
||||
}
|
||||
|
||||
values = _mesa_map_pbo_dest(ctx, &ctx->Pack, values);
|
||||
if (!values) {
|
||||
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
|
||||
/* buffer is already mapped - that's an error */
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,"glGetMinMax(PBO is mapped)");
|
||||
}
|
||||
values = _mesa_map_validate_pbo_dest(ctx, 1, &ctx->Pack, 2, 1, 1,
|
||||
format, type, values, "glGetMinmax");
|
||||
if (!values)
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
GLfloat minmax[2][4];
|
||||
@@ -722,20 +712,12 @@ _mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, G
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_mesa_validate_pbo_access(1, &ctx->Pack, ctx->Histogram.Width, 1, 1,
|
||||
format, type, values)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetHistogram(invalid PBO access)");
|
||||
values = _mesa_map_validate_pbo_dest(ctx, 1, &ctx->Pack,
|
||||
ctx->Histogram.Width, 1, 1,
|
||||
format, type, values,
|
||||
"glGetHistogram");
|
||||
if (!values)
|
||||
return;
|
||||
}
|
||||
|
||||
values = _mesa_map_pbo_dest(ctx, &ctx->Pack, values);
|
||||
if (!values) {
|
||||
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
|
||||
_mesa_error(ctx,GL_INVALID_OPERATION,"glGetHistogram(PBO is mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
pack_histogram(ctx, ctx->Histogram.Width,
|
||||
(CONST GLuint (*)[4]) ctx->Histogram.Count,
|
||||
|
@@ -193,21 +193,12 @@ _mesa_PolygonMode( GLenum face, GLenum mode )
|
||||
void
|
||||
_mesa_polygon_stipple(GLcontext *ctx, const GLubyte *pattern)
|
||||
{
|
||||
if (!_mesa_validate_pbo_access(2, &ctx->Unpack, 32, 32, 1,
|
||||
GL_COLOR_INDEX, GL_BITMAP, pattern)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glPolygonStipple(bad PBO access)");
|
||||
pattern = _mesa_map_validate_pbo_source(ctx, 2,
|
||||
&ctx->Unpack, 32, 32, 1,
|
||||
GL_COLOR_INDEX, GL_BITMAP, pattern,
|
||||
"glPolygonStipple");
|
||||
if (!pattern)
|
||||
return;
|
||||
}
|
||||
|
||||
pattern = _mesa_map_pbo_source(ctx, &ctx->Unpack, pattern);
|
||||
if (!pattern) {
|
||||
if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glPolygonStipple(PBO mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_unpack_polygon_stipple(pattern, ctx->PolygonStipple, &ctx->Unpack);
|
||||
|
||||
@@ -248,21 +239,12 @@ _mesa_GetPolygonStipple( GLubyte *dest )
|
||||
if (MESA_VERBOSE&VERBOSE_API)
|
||||
_mesa_debug(ctx, "glGetPolygonStipple\n");
|
||||
|
||||
if (!_mesa_validate_pbo_access(2, &ctx->Pack, 32, 32, 1,
|
||||
GL_COLOR_INDEX, GL_BITMAP, dest)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetPolygonStipple(bad PBO access)");
|
||||
dest = _mesa_map_validate_pbo_dest(ctx, 2,
|
||||
&ctx->Pack, 32, 32, 1,
|
||||
GL_COLOR_INDEX, GL_BITMAP, dest,
|
||||
"glGetPolygonStipple");
|
||||
if (!dest)
|
||||
return;
|
||||
}
|
||||
|
||||
dest = _mesa_map_pbo_dest(ctx, &ctx->Pack, dest);
|
||||
if (!dest) {
|
||||
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetPolygonStipple(PBO mapped)");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_pack_polygon_stipple(ctx->PolygonStipple, dest, &ctx->Pack);
|
||||
|
||||
|
Reference in New Issue
Block a user