On 26/08/14 22:23, Emil Velikov wrote: > On 17/06/14 14:41, Brian Paul wrote: >> On 06/16/2014 07:34 PM, Ian Romanick wrote: >>> From: Ian Romanick <ian.d.roman...@intel.com> >>> >>> Previously, calling >>> >>> glGenTextures(1, &t); >>> glBindTexture(GL_TEXTURE_2D, t); >>> glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, 0xDEADBEEF, &value); >>> >>> would not generate an error. >>> > Hi Ian, > > This patch has been nominated for stable for a couple of months but is jet to > land in master. Has it been super-seeded by another patch or is there anything > else stopping it from going forward ? >
It seems that it is super-seeded by the following. Sorry for the noise gents. -Emil commit ee58c71a65bb5b769a03e4b25bd13c57a6b742d8 Author: Ian Romanick <ian.d.roman...@intel.com> Date: Tue Jun 17 14:58:14 2014 -0700 mesa: Handle uninitialized textures like other textures in get_tex_level_parameter_image Instead of catching the special case early, handle it by constructing a fake gl_texture_image that will cause the values required by the OpenGL 4.0 spec to be returned. Previously, calling glGenTextures(1, &t); glBindTexture(GL_TEXTURE_2D, t); glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, 0xDEADBEEF, &value); would not generate an error. Anuj: Can you verify this does not regress proxy_textures_invalid_size? Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Reviewed-by: Brian Paul <bri...@vmware.com> Suggested-by: Brian Paul <bri...@vmware.com> Cc: "10.2" <mesa-sta...@lists.freedesktop.org> Cc: Anuj Phogat <anuj.pho...@gmail.com> > Thanks > Emil > >>> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> >>> Cc: "10.2" <mesa-sta...@lists.freedesktop.org> >>> --- >>> src/mesa/main/texparam.c | 63 >>> +++++++++++++++++++++++++++++++++++++++--------- >>> 1 file changed, 52 insertions(+), 11 deletions(-) >>> >>> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c >>> index dc17ea5..565c1d6 100644 >>> --- a/src/mesa/main/texparam.c >>> +++ b/src/mesa/main/texparam.c >>> @@ -1053,6 +1053,58 @@ get_tex_level_parameter_image(struct gl_context *ctx, >>> const struct gl_texture_image *img = NULL; >>> mesa_format texFormat; >>> >>> + /* Generate pname errors now. OpenGL 4.0 requires special behavior if >>> the >>> + * image is undefined, but that does not supersede pname-based errors. >>> + */ >>> + switch (pname) { >>> + case GL_TEXTURE_WIDTH: >>> + case GL_TEXTURE_HEIGHT: >>> + case GL_TEXTURE_DEPTH: >>> + case GL_TEXTURE_INTERNAL_FORMAT: >>> + case GL_TEXTURE_BORDER: >>> + case GL_TEXTURE_RED_SIZE: >>> + case GL_TEXTURE_GREEN_SIZE: >>> + case GL_TEXTURE_BLUE_SIZE: >>> + case GL_TEXTURE_ALPHA_SIZE: >>> + case GL_TEXTURE_INTENSITY_SIZE: >>> + case GL_TEXTURE_LUMINANCE_SIZE: >>> + break; >>> + case GL_TEXTURE_DEPTH_SIZE_ARB: >>> + if (!ctx->Extensions.ARB_depth_texture) >>> + goto invalid_pname; >>> + break; >>> + case GL_TEXTURE_STENCIL_SIZE: >>> + break; >>> + case GL_TEXTURE_SHARED_SIZE: >>> + if (ctx->Version < 30 && >>> + !ctx->Extensions.EXT_texture_shared_exponent) >>> + goto invalid_pname; >>> + break; >>> + case GL_TEXTURE_COMPRESSED_IMAGE_SIZE: >>> + case GL_TEXTURE_COMPRESSED: >>> + break; >>> + case GL_TEXTURE_RED_TYPE_ARB: >>> + case GL_TEXTURE_GREEN_TYPE_ARB: >>> + case GL_TEXTURE_BLUE_TYPE_ARB: >>> + case GL_TEXTURE_ALPHA_TYPE_ARB: >>> + case GL_TEXTURE_LUMINANCE_TYPE_ARB: >>> + case GL_TEXTURE_INTENSITY_TYPE_ARB: >>> + case GL_TEXTURE_DEPTH_TYPE_ARB: >>> + if (!ctx->Extensions.ARB_texture_float) >>> + goto invalid_pname; >>> + break; >>> + case GL_TEXTURE_SAMPLES: >>> + if (!ctx->Extensions.ARB_texture_multisample) >>> + goto invalid_pname; >>> + break; >>> + case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: >>> + if (!ctx->Extensions.ARB_texture_multisample) >>> + goto invalid_pname; >>> + break; >>> + default: >>> + goto invalid_pname; >>> + } >>> + >>> img = _mesa_select_tex_image(ctx, texObj, target, level); >>> if (!img || img->TexFormat == MESA_FORMAT_NONE) { >>> /* In case of undefined texture image return the default values. >>> @@ -1135,17 +1187,12 @@ get_tex_level_parameter_image(struct gl_context >>> *ctx, >>> } >>> break; >>> case GL_TEXTURE_DEPTH_SIZE_ARB: >>> - if (!ctx->Extensions.ARB_depth_texture) >>> - goto invalid_pname; >>> *params = _mesa_get_format_bits(texFormat, pname); >>> break; >>> case GL_TEXTURE_STENCIL_SIZE: >>> *params = _mesa_get_format_bits(texFormat, pname); >>> break; >>> case GL_TEXTURE_SHARED_SIZE: >>> - if (ctx->Version < 30 && >>> - !ctx->Extensions.EXT_texture_shared_exponent) >>> - goto invalid_pname; >>> *params = texFormat == MESA_FORMAT_R9G9B9E5_FLOAT ? 5 : 0; >>> break; >>> >>> @@ -1173,8 +1220,6 @@ get_tex_level_parameter_image(struct gl_context *ctx, >>> case GL_TEXTURE_LUMINANCE_TYPE_ARB: >>> case GL_TEXTURE_INTENSITY_TYPE_ARB: >>> case GL_TEXTURE_DEPTH_TYPE_ARB: >>> - if (!ctx->Extensions.ARB_texture_float) >>> - goto invalid_pname; >>> if (_mesa_base_format_has_channel(img->_BaseFormat, pname)) >>> *params = _mesa_get_format_datatype(texFormat); >>> else >>> @@ -1183,14 +1228,10 @@ get_tex_level_parameter_image(struct gl_context >>> *ctx, >>> >>> /* GL_ARB_texture_multisample */ >>> case GL_TEXTURE_SAMPLES: >>> - if (!ctx->Extensions.ARB_texture_multisample) >>> - goto invalid_pname; >>> *params = img->NumSamples; >>> break; >>> >>> case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: >>> - if (!ctx->Extensions.ARB_texture_multisample) >>> - goto invalid_pname; >>> *params = img->FixedSampleLocations; >>> break; >>> >>> >> >> I think another way of handling this might be to define/use a dummy >> gl_texture_image to use when img would have been null. The dummy >> gl_texture_image would be initialized with suitable defaults for all the >> query-able fields (but mostly zeros). >> >> That would save us the extra switch and might be less work if new queries are >> added in the future. >> >> -Brian >> >> >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev