st/mesa: add texture buffer object rgb32 support.
authorDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 03:03:54 +0000 (13:03 +1000)
committerDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 20:55:39 +0000 (06:55 +1000)
This checks if the pipe driver can support RGB32 formats.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/mesa/state_tracker/st_extensions.c

index f3f01ebd5e4e18edf34c702bab3604fce3f78b24..262cc3d6c7444695112ec0f6ca5994f0a759b4d3 100644 (file)
@@ -494,6 +494,14 @@ void st_init_extensions(struct st_context *st)
           PIPE_FORMAT_B10G10R10A2_SSCALED } },
    };
 
+   static const struct st_extension_format_mapping tbo_rgb32[] = {
+      { {o(ARB_texture_buffer_object_rgb32) },
+        { PIPE_FORMAT_R32G32B32_FLOAT,
+          PIPE_FORMAT_R32G32B32_UINT,
+          PIPE_FORMAT_R32G32B32_SINT,
+        } },
+   };
+
    /*
     * Extensions that are supported by all Gallium drivers:
     */
@@ -661,8 +669,12 @@ void st_init_extensions(struct st_context *st)
    if (ctx->Const.MinMapBufferAlignment >= 64) {
       ctx->Extensions.ARB_map_buffer_alignment = GL_TRUE;
    }
-   if (screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OBJECTS))
+   if (screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OBJECTS)) {
       ctx->Extensions.ARB_texture_buffer_object = GL_TRUE;
+      init_format_extensions(st, tbo_rgb32, Elements(tbo_rgb32),
+                             PIPE_BUFFER, PIPE_BIND_SAMPLER_VIEW);
+   }
+
 
    /* Unpacking a varying in the fragment shader costs 1 texture indirection.
     * If the number of available texture indirections is very limited, then we