1-month ping dEQP has a number of tests both for texture buffers, as well as image buffers. would be nice to have access to those.
-ilia On Sat, Feb 27, 2016 at 4:29 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > This fixes all failures with dEQP tests in this area. While > ARB_texture_buffer_object explicitly says that GetTexLevelParameter & co > should not be supported, GL 3.1 reverses this decision and allows all of > these queries there. > > Conversely, there is no text that forbids the buffer-specific queries > from being used with non-buffer images. > > Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > src/mesa/main/texparam.c | 54 > ++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 52 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c > index 3b769f4..9d94636 100644 > --- a/src/mesa/main/texparam.c > +++ b/src/mesa/main/texparam.c > @@ -1447,6 +1447,29 @@ get_tex_level_parameter_image(struct gl_context *ctx, > *params = img->FixedSampleLocations; > break; > > + /* There is never a buffer data store here, but these pnames still have > + * to work. > + */ > + > + /* GL_ARB_texture_buffer_object */ > + case GL_TEXTURE_BUFFER_DATA_STORE_BINDING: > + if (!ctx->Extensions.ARB_texture_buffer_object) > + goto invalid_pname; > + *params = 0; > + break; > + > + /* GL_ARB_texture_buffer_range */ > + case GL_TEXTURE_BUFFER_OFFSET: > + if (!ctx->Extensions.ARB_texture_buffer_range) > + goto invalid_pname; > + *params = 0; > + break; > + case GL_TEXTURE_BUFFER_SIZE: > + if (!ctx->Extensions.ARB_texture_buffer_range) > + goto invalid_pname; > + *params = 0; > + break; > + > default: > goto invalid_pname; > } > @@ -1468,13 +1491,24 @@ get_tex_level_parameter_buffer(struct gl_context *ctx, > { > const struct gl_buffer_object *bo = texObj->BufferObject; > mesa_format texFormat = texObj->_BufferObjectFormat; > + int bytes = MAX2(1, _mesa_get_format_bytes(texFormat)); > GLenum internalFormat = texObj->BufferObjectFormat; > GLenum baseFormat = _mesa_get_format_base_format(texFormat); > const char *suffix = dsa ? "ture" : ""; > > if (!bo) { > /* undefined texture buffer object */ > - *params = pname == GL_TEXTURE_COMPONENTS ? 1 : 0; > + switch (pname) { > + case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: > + *params = GL_TRUE; > + break; > + case GL_TEXTURE_INTERNAL_FORMAT: > + *params = internalFormat; > + break; > + default: > + *params = 0; > + break; > + } > return; > } > > @@ -1483,10 +1517,13 @@ get_tex_level_parameter_buffer(struct gl_context *ctx, > *params = bo->Name; > break; > case GL_TEXTURE_WIDTH: > - *params = bo->Size; > + *params = ((texObj->BufferSize == -1) ? bo->Size : > texObj->BufferSize) > + / bytes; > break; > case GL_TEXTURE_HEIGHT: > case GL_TEXTURE_DEPTH: > + *params = 1; > + break; > case GL_TEXTURE_BORDER: > case GL_TEXTURE_SHARED_SIZE: > case GL_TEXTURE_COMPRESSED: > @@ -1536,6 +1573,19 @@ get_tex_level_parameter_buffer(struct gl_context *ctx, > *params = (texObj->BufferSize == -1) ? bo->Size : > texObj->BufferSize; > break; > > + /* GL_ARB_texture_multisample */ > + case GL_TEXTURE_SAMPLES: > + if (!ctx->Extensions.ARB_texture_multisample) > + goto invalid_pname; > + *params = 0; > + break; > + > + case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: > + if (!ctx->Extensions.ARB_texture_multisample) > + goto invalid_pname; > + *params = GL_TRUE; > + break; > + > /* GL_ARB_texture_compression */ > case GL_TEXTURE_COMPRESSED_IMAGE_SIZE: > /* Always illegal for GL_TEXTURE_BUFFER */ > -- > 2.4.10 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev