Reviewed-by: Brian Paul <bri...@vmware.com>

On 03/27/2016 09:19 AM, Ilia Mirkin wrote:
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://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=NBqjQGyb73UPGPIVz1-hfSm0zb9WfWbc0gjTvrJ8JVI&s=ZJrAJ2tGof3duwSP9XUKgHl1MOlcHSdbEvNLADuhvA0&e=


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to