[Mesa-dev] [RFC PATCH 05/65] mesa: refuse to update sampler parameters when a handle is allocated
Nicolai Hähnle
nhaehnle at gmail.com
Wed May 24 10:20:30 UTC 2017
On 19.05.2017 18:52, Samuel Pitoiset wrote:
> The ARB_bindless_texture spec says:
>
> "The error INVALID_OPERATION is generated by SamplerParameter* if
> <sampler> identifies a sampler object referenced by one or more
> texture handles."
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/mesa/main/samplerobj.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 42 insertions(+)
>
> diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
> index ee15c68b4f..cf4bcfce7c 100644
> --- a/src/mesa/main/samplerobj.c
> +++ b/src/mesa/main/samplerobj.c
> @@ -801,6 +801,18 @@ _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + /* The ARB_bindless_texture spec says:
> + *
> + * "The error INVALID_OPERATION is generated by SamplerParameter* if
> + * <sampler> identifies a sampler object referenced by one or more
> + * texture handles."
> + */
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameteri(immutable sampler)");
> + return;
> + }
Maybe these could go into sampler_parameter_error_check?
Cheers,
Nicolai
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, param);
> @@ -884,6 +896,12 @@ _mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameterf(immutable sampler)");
> + return;
> + }
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, (GLint) param);
> @@ -966,6 +984,12 @@ _mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameteriv(immutable sampler)");
> + return;
> + }
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, params[0]);
> @@ -1056,6 +1080,12 @@ _mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameterfv(immutable sampler)");
> + return;
> + }
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]);
> @@ -1139,6 +1169,12 @@ _mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameterIiv(immutable sampler)");
> + return;
> + }
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, params[0]);
> @@ -1223,6 +1259,12 @@ _mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params)
> if (!sampObj)
> return;
>
> + if (sampObj->HandleAllocated) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> + "glSamplerParameterIuiv(immutable sampler)");
> + return;
> + }
> +
> switch (pname) {
> case GL_TEXTURE_WRAP_S:
> res = set_sampler_wrap_s(ctx, sampObj, params[0]);
>
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list