st/mesa: make st_init_limits context-independent
authorMarek Olšák <marek.olsak@amd.com>
Sun, 3 Aug 2014 02:36:19 +0000 (04:36 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 11 Aug 2014 19:53:57 +0000 (21:53 +0200)
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/mesa/state_tracker/st_context.c
src/mesa/state_tracker/st_extensions.c
src/mesa/state_tracker/st_extensions.h

index dc0cdafffedbb8b5c5824e2821f5ed9c56ff7296..09b61546582835e47b648fc92db0ccb1fa5a0db9 100644 (file)
@@ -205,7 +205,7 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
       screen->get_param(screen, PIPE_CAP_QUERY_TIME_ELAPSED);
 
    /* GL limits and extensions */
-   st_init_limits(st);
+   st_init_limits(st->pipe->screen, &ctx->Const, &ctx->Extensions);
    st_init_extensions(st->pipe->screen, ctx->API, &ctx->Const,
                       &ctx->Extensions, &st->options, ctx->Mesa_DXTn);
 
@@ -230,6 +230,12 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
       }
    }
 
+   /* called after _mesa_create_context/_mesa_init_point, fix default user
+    * settable max point size up
+    */
+   st->ctx->Point.MaxSize = MAX2(ctx->Const.MaxPointSize,
+                                 ctx->Const.MaxPointSizeAA);
+
    _mesa_compute_version(ctx);
 
    _mesa_initialize_dispatch_tables(ctx);
index c6824d4bd881e76c2c6e916ed4d3e9f6297586ef..2d7b147969a8449261ccb51fae9825e9ec5553ef 100644 (file)
@@ -70,10 +70,9 @@ static int _clamp(int a, int min, int max)
  * Query driver to get implementation limits.
  * Note that we have to limit/clamp against Mesa's internal limits too.
  */
-void st_init_limits(struct st_context *st)
+void st_init_limits(struct pipe_screen *screen,
+                    struct gl_constants *c, struct gl_extensions *extensions)
 {
-   struct pipe_screen *screen = st->pipe->screen;
-   struct gl_constants *c = &st->ctx->Const;
    unsigned sh;
    boolean can_ubo = TRUE;
 
@@ -124,10 +123,7 @@ void st_init_limits(struct st_context *st)
    c->MaxPointSizeAA
       = _maxf(1.0f, screen->get_paramf(screen,
                                        PIPE_CAPF_MAX_POINT_WIDTH_AA));
-   /* called after _mesa_create_context/_mesa_init_point, fix default user
-    * settable max point size up
-    */
-   st->ctx->Point.MaxSize = MAX2(c->MaxPointSize, c->MaxPointSizeAA);
+
    /* these are not queryable. Note that GL basically mandates a 1.0 minimum
     * for non-aa sizes, but we can go down to 0.0 for aa points.
     */
@@ -300,7 +296,7 @@ void st_init_limits(struct st_context *st)
       screen->get_param(screen, PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS);
 
    if (can_ubo) {
-      st->ctx->Extensions.ARB_uniform_buffer_object = GL_TRUE;
+      extensions->ARB_uniform_buffer_object = GL_TRUE;
       c->UniformBufferOffsetAlignment =
          screen->get_param(screen, PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT);
       c->MaxCombinedUniformBlocks = c->MaxUniformBufferBindings =
index aa24632577b0e59931350e80bdf8bfacb33ecfba..8d2724d67f692bcd520ddd6ac5a47e82c73fb7a7 100644 (file)
@@ -33,7 +33,9 @@
 struct st_context;
 struct pipe_screen;
 
-extern void st_init_limits(struct st_context *st);
+extern void st_init_limits(struct pipe_screen *screen,
+                           struct gl_constants *c,
+                           struct gl_extensions *extensions);
 
 extern void st_init_extensions(struct pipe_screen *screen,
                                gl_api api,