On Friday 24 April 2015, Arthur Huillet wrote: > From: Arthur Huillet <ahuil...@nvidia.com> > > Updated BindTextureUnit() to match the OpenGL specification: > GL_INVALID_OPERATION > is expected when the texture object doesn't exist, not GL_INVALID_ENUM. > When the texture unit doesn't exist, the specification doesn't strictly > speaking > define the error, and although BindTextures() uses GL_INVALID_OPERATION for > this > case, table 2.3 serves as a default and states that GL_INVALID_VALUE is the > correct error. > > Signed-off-by: Arthur Huillet <ahuil...@nvidia.com> > --- > .../arb_direct_state_access/bind-texture-unit.c | 22 > ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) > > diff --git a/tests/spec/arb_direct_state_access/bind-texture-unit.c > b/tests/spec/arb_direct_state_access/bind-texture-unit.c > index b6a98a9..de06791 100644 > --- a/tests/spec/arb_direct_state_access/bind-texture-unit.c > +++ b/tests/spec/arb_direct_state_access/bind-texture-unit.c > @@ -53,21 +53,35 @@ piglit_display(void) > GLint nunits; > > /* Throw some invalid inputs at BindTextureUnit. */ > - /* Non-gen-d texture name */ > + > + > + /* GL 4.5 spec section 8.1: > + "An INVALID_OPERATION error is generated by BindTextureUnit if > + texture is not zero or the name of an existing texture object." */ > + > + /* Texture name doesn't exist */ > glBindTextureUnit(0, name); > pass &= piglit_check_gl_error(GL_INVALID_OPERATION); > > - /* No target */ > + /* Texture name exists, but texture object does not */ > glGenTextures(1, &name); > glBindTextureUnit(0, name); > - pass &= piglit_check_gl_error(GL_INVALID_ENUM); > + pass &= piglit_check_gl_error(GL_INVALID_OPERATION); > + > + /* GL 4.5 spec section 8.1 says of BindTextures: > + "An INVALID_OPERATION error is generated if first + count is greater > + than the number of texture image units supported by the > + implementation." > + However, it doesn't say the same about BindTextureUnit. > + Table 2.3 implies that a numeric argument out of range yields > + INVALID_VALUE, not INVALID_OPERATION. */ > > /* Texture unit doesn't exist */ > glDeleteTextures(1, &name); > glCreateTextures(GL_TEXTURE_2D, 1, &name); > glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &nunits); > glBindTextureUnit(nunits, name); /* Too High */ > - pass &= piglit_check_gl_error(GL_INVALID_OPERATION); > + pass &= piglit_check_gl_error(GL_INVALID_VALUE); > > /* Trivial, but should work. */ > glBindTextureUnit(1, name); >
Reviewed-by: Fredrik Höglund <fred...@kde.org> _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit