[Mesa-dev] [PATCH 00/30] do not allow invalid texture-format enums

Erik Faye-Lund erik.faye-lund at collabora.com
Mon Nov 19 12:14:36 UTC 2018


Here's a lengthy patch-series that aims to fix a few simple bugs, where
invalid enums for texture formats were allowed when they shouldn't be.

In general, this is a pattern of checking ctx->Extensions.FOO_bar
instead of _mesa_has_FOO_bar(ctx). The difference is that the former is
really just a driver capability, whereas the latter checks if the API is
of the right profile and version as well.

Generally, this has lead to enums being incorrectly accepted on older
versions of the APIs, or in the wrong profile. In particular OpenGL ES
1.x and 2.0 allowed a lot of enums where there's no corresponding
extension enabling it.

The last five patches are slightly different; they are fixups to version
and extension requirements. These were simply noticed while working on
this series.

I've run this through piglit on i965, and found no regressions. One test
was fixed, namely oes_packed_depth_stencil-depth-stencil-texture_gles1.

I don't think this is worth back-porting to old releases, as this only
prevents broken code from incorrectly working, not the other way around.

Erik Faye-Lund (30):
  mesa/main: make _mesa_has_tessellation return bool
  mesa/main: rename format-check function
  mesa/main: clean up S3_s3tc check
  mesa/main: clean up OES_texture_float_linear check
  mesa/main: clean up ES2_compatibility check
  mesa/main: clean up integer texture check
  mesa/main: use _mesa_has_FOO_bar for compressed format checks
  mesa/main: do not allow s3tc enums on gles1
  mesa/main: do not allow etc2 enums on gles1
  mesa/main: do not allow astc enums on gles1
  mesa/main: do not allow depth-texture enums on gles1
  mesa/main: do not allow stencil-texture enums on gles1
  mesa/main: do not allow ARB_texture_rgb10_a2ui enums before gles3
  mesa/main: do not allow integer-texture enums before gles3
  mesa/main: do not allow ARB_depth_buffer_float enums before gles3
  mesa/main: do not allow EXT_packed_float enums before gles3
  mesa/main: do not allow rg-textures enums before gles3
  mesa/main: do not allow EXT_texture_shared_exponent enums before gles3
  mesa/main: do not allow MESA_ycbcr_texture enums on gles
  mesa/main: do not allow type_2_10_10_10_REV enums before gles3
  mesa/main: do not allow floating-point texture enums on gles1
  mesa/main: do not allow snorm-texture enums before gles3
  mesa/main: do not allow sRGB texture enums before gles3
  mesa/main: do not allow EXT_texture_sRGB_R8 enums before gles3
  mesa/main: split float-texture support checking in two
  mesa/main: require EXT_texture_type_2_10_10_10_REV for gles3
  mesa/main: require EXT_texture_sRGB for gles3
  mesa/st: do not probe for the same texture-formats twice
  mesa/main: do not require float-texture filtering for es3
  mesa/st: require linear interpolation for ARB_texture_float

 src/mesa/main/context.h                |  59 ++++++-
 src/mesa/main/glformats.c              | 221 +++++++++++++------------
 src/mesa/main/glformats.h              |   6 +-
 src/mesa/main/teximage.c               |   4 +-
 src/mesa/main/version.c                |   8 +-
 src/mesa/state_tracker/st_extensions.c |  10 +-
 6 files changed, 188 insertions(+), 120 deletions(-)

-- 
2.19.1



More information about the mesa-dev mailing list