mesa: Do proper format error checks for GenerateMipmap in ES 3.x.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 15 Mar 2016 07:41:16 +0000 (00:41 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 19 Mar 2016 01:43:47 +0000 (18:43 -0700)
commit46610238e0a8db47c293f75ad8d667747d6256af
tree8b7ac194d9fbf5dfd27c8e7e749360bf063cea4b
parentf1b05735108c6733893dfbe762366f2676501c0d
mesa: Do proper format error checks for GenerateMipmap in ES 3.x.

According to the OpenGL ES 3.2 spec's description of GenerateMipmap:

"An INVALID_OPERATION error is generated if the levelbase array was not
 specified with an unsized internal format from table 8.3 or a sized
 internal format that is both color-renderable and texture-filterable
 according to table 8.10."

Similar text exists in the ES 3.0 specification as well.

Our existing rules are pretty close, but miss a few things.  The
OpenGL specification actually doesn't have any text about internal
format checking - our existing code comes from a Khronos bug report.
The ES 3.x spec provides a clearer description.

Fixes dEQP-GLES3.functional.negative_api.texture.generatemipmap and
dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level
_array_compressed.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/main/genmipmap.c