Mesa (master): st/mesa: accept and handle configuration options from st/dri

Vadim Girlin vadimg at kemper.freedesktop.org
Thu Aug 23 16:18:56 UTC 2012


Module: Mesa
Branch: master
Commit: a6457c0692f1bc292ae4120ff5cd0bed340271b9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6457c0692f1bc292ae4120ff5cd0bed340271b9

Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Thu Apr 12 04:30:03 2012 +0400

st/mesa: accept and handle configuration options from st/dri

Currently there is a single option - force_glsl_extensions_warn.

Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>

---

 src/gallium/include/state_tracker/st_api.h |   14 ++++++++++++++
 src/mesa/state_tracker/st_context.c        |   10 +++++++---
 src/mesa/state_tracker/st_context.h        |    5 ++++-
 src/mesa/state_tracker/st_extensions.c     |    2 ++
 src/mesa/state_tracker/st_manager.c        |    2 +-
 5 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 86ab02d..3a11cd4 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -232,6 +232,15 @@ struct st_visual
    enum st_attachment_type render_buffer;
 };
 
+
+/**
+ * Configuration options from driconf
+ */
+struct st_config_options
+{
+	boolean force_glsl_extensions_warn;
+};
+
 /**
  * Represent the attributes of a context.
  */
@@ -254,6 +263,11 @@ struct st_context_attribs
     * The visual of the framebuffers the context will be bound to.
     */
    struct st_visual visual;
+
+   /**
+    * Configuration options.
+    */
+   struct st_config_options options;
 };
 
 /**
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 2e14da2..aa35341 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -114,12 +114,15 @@ st_get_msaa(void)
 
 
 static struct st_context *
-st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe )
+st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
+		const struct st_config_options *options)
 {
    struct pipe_screen *screen = pipe->screen;
    uint i;
    struct st_context *st = ST_CALLOC_STRUCT( st_context );
    
+   st->options = *options;
+
    ctx->st = st;
 
    st->ctx = ctx;
@@ -207,7 +210,8 @@ static void st_init_driver_flags(struct gl_driver_flags *f)
 
 struct st_context *st_create_context(gl_api api, struct pipe_context *pipe,
                                      const struct gl_config *visual,
-                                     struct st_context *share)
+                                     struct st_context *share,
+                                     const struct st_config_options *options)
 {
    struct gl_context *ctx;
    struct gl_context *shareCtx = share ? share->ctx : NULL;
@@ -234,7 +238,7 @@ struct st_context *st_create_context(gl_api api, struct pipe_context *pipe,
    if (debug_get_option_mesa_mvp_dp4())
       _mesa_set_mvp_with_dp4( ctx, GL_TRUE );
 
-   return st_create_context_priv(ctx, pipe);
+   return st_create_context_priv(ctx, pipe, options);
 }
 
 
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index 47d3af5..c85d09c 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -194,6 +194,8 @@ struct st_context
 
    int32_t draw_stamp;
    int32_t read_stamp;
+
+   struct st_config_options options;
 };
 
 
@@ -266,7 +268,8 @@ st_get_msaa(void);
 extern struct st_context *
 st_create_context(gl_api api, struct pipe_context *pipe,
                   const struct gl_config *visual,
-                  struct st_context *share);
+                  struct st_context *share,
+                  const struct st_config_options *options);
 
 extern void
 st_destroy_context(struct st_context *st);
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 2f034cb..5e482d9 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -646,4 +646,6 @@ void st_init_extensions(struct st_context *st)
        ctx->Extensions.ARB_draw_instanced) {
       ctx->Extensions.ARB_transform_feedback_instanced = GL_TRUE;
    }
+   if (st->options.force_glsl_extensions_warn)
+	   ctx->Const.ForceGLSLExtensionsWarn = 1;
 }
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 5142eb2..33389fc 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -637,7 +637,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
    }
 
    st_visual_to_context_mode(&attribs->visual, &mode);
-   st = st_create_context(api, pipe, &mode, shared_ctx);
+   st = st_create_context(api, pipe, &mode, shared_ctx, &attribs->options);
    if (!st) {
       *error = ST_CONTEXT_ERROR_NO_MEMORY;
       pipe->destroy(pipe);




More information about the mesa-commit mailing list