summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker/st_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/state_tracker/st_context.c')
-rw-r--r--src/mesa/state_tracker/st_context.c123
1 files changed, 62 insertions, 61 deletions
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 8abf879ab98..c52f42bf5b5 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -286,7 +286,68 @@ st_destroy_context_priv(struct st_context *st, bool destroy_pipe)
free( st );
}
-static void st_init_driver_flags(struct st_context *st);
+
+static void st_init_driver_flags(struct st_context *st)
+{
+ struct gl_driver_flags *f = &st->ctx->DriverFlags;
+
+ f->NewArray = ST_NEW_VERTEX_ARRAYS;
+ f->NewRasterizerDiscard = ST_NEW_RASTERIZER;
+ f->NewTileRasterOrder = ST_NEW_RASTERIZER;
+ f->NewUniformBuffer = ST_NEW_UNIFORM_BUFFER;
+ f->NewDefaultTessLevels = ST_NEW_TESS_STATE;
+
+ /* Shader resources */
+ f->NewTextureBuffer = ST_NEW_SAMPLER_VIEWS;
+ if (st->has_hw_atomics)
+ f->NewAtomicBuffer = ST_NEW_HW_ATOMICS;
+ else
+ f->NewAtomicBuffer = ST_NEW_ATOMIC_BUFFER;
+ f->NewShaderStorageBuffer = ST_NEW_STORAGE_BUFFER;
+ f->NewImageUnits = ST_NEW_IMAGE_UNITS;
+
+ f->NewShaderConstants[MESA_SHADER_VERTEX] = ST_NEW_VS_CONSTANTS;
+ f->NewShaderConstants[MESA_SHADER_TESS_CTRL] = ST_NEW_TCS_CONSTANTS;
+ f->NewShaderConstants[MESA_SHADER_TESS_EVAL] = ST_NEW_TES_CONSTANTS;
+ f->NewShaderConstants[MESA_SHADER_GEOMETRY] = ST_NEW_GS_CONSTANTS;
+ f->NewShaderConstants[MESA_SHADER_FRAGMENT] = ST_NEW_FS_CONSTANTS;
+ f->NewShaderConstants[MESA_SHADER_COMPUTE] = ST_NEW_CS_CONSTANTS;
+
+ f->NewWindowRectangles = ST_NEW_WINDOW_RECTANGLES;
+ f->NewFramebufferSRGB = ST_NEW_FB_STATE;
+ f->NewScissorRect = ST_NEW_SCISSOR;
+ f->NewScissorTest = ST_NEW_SCISSOR | ST_NEW_RASTERIZER;
+ f->NewAlphaTest = ST_NEW_DSA;
+ f->NewBlend = ST_NEW_BLEND;
+ f->NewBlendColor = ST_NEW_BLEND_COLOR;
+ f->NewColorMask = ST_NEW_BLEND;
+ f->NewDepth = ST_NEW_DSA;
+ f->NewLogicOp = ST_NEW_BLEND;
+ f->NewStencil = ST_NEW_DSA;
+ f->NewMultisampleEnable = ST_NEW_BLEND | ST_NEW_RASTERIZER |
+ ST_NEW_SAMPLE_MASK | ST_NEW_SAMPLE_SHADING;
+ f->NewSampleAlphaToXEnable = ST_NEW_BLEND;
+ f->NewSampleMask = ST_NEW_SAMPLE_MASK;
+ f->NewSampleShading = ST_NEW_SAMPLE_SHADING;
+
+ /* This depends on what the gallium driver wants. */
+ if (st->force_persample_in_shader) {
+ f->NewMultisampleEnable |= ST_NEW_FS_STATE;
+ f->NewSampleShading |= ST_NEW_FS_STATE;
+ } else {
+ f->NewSampleShading |= ST_NEW_RASTERIZER;
+ }
+
+ f->NewClipControl = ST_NEW_VIEWPORT | ST_NEW_RASTERIZER;
+ f->NewClipPlane = ST_NEW_CLIP_STATE;
+ f->NewClipPlaneEnable = ST_NEW_RASTERIZER;
+ f->NewDepthClamp = ST_NEW_RASTERIZER;
+ f->NewLineState = ST_NEW_RASTERIZER;
+ f->NewPolygonState = ST_NEW_RASTERIZER;
+ f->NewPolygonStipple = ST_NEW_POLY_STIPPLE;
+ f->NewViewport = ST_NEW_VIEWPORT;
+}
+
static struct st_context *
st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
@@ -489,66 +550,6 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
return st;
}
-static void st_init_driver_flags(struct st_context *st)
-{
- struct gl_driver_flags *f = &st->ctx->DriverFlags;
-
- f->NewArray = ST_NEW_VERTEX_ARRAYS;
- f->NewRasterizerDiscard = ST_NEW_RASTERIZER;
- f->NewTileRasterOrder = ST_NEW_RASTERIZER;
- f->NewUniformBuffer = ST_NEW_UNIFORM_BUFFER;
- f->NewDefaultTessLevels = ST_NEW_TESS_STATE;
-
- /* Shader resources */
- f->NewTextureBuffer = ST_NEW_SAMPLER_VIEWS;
- if (st->has_hw_atomics)
- f->NewAtomicBuffer = ST_NEW_HW_ATOMICS;
- else
- f->NewAtomicBuffer = ST_NEW_ATOMIC_BUFFER;
- f->NewShaderStorageBuffer = ST_NEW_STORAGE_BUFFER;
- f->NewImageUnits = ST_NEW_IMAGE_UNITS;
-
- f->NewShaderConstants[MESA_SHADER_VERTEX] = ST_NEW_VS_CONSTANTS;
- f->NewShaderConstants[MESA_SHADER_TESS_CTRL] = ST_NEW_TCS_CONSTANTS;
- f->NewShaderConstants[MESA_SHADER_TESS_EVAL] = ST_NEW_TES_CONSTANTS;
- f->NewShaderConstants[MESA_SHADER_GEOMETRY] = ST_NEW_GS_CONSTANTS;
- f->NewShaderConstants[MESA_SHADER_FRAGMENT] = ST_NEW_FS_CONSTANTS;
- f->NewShaderConstants[MESA_SHADER_COMPUTE] = ST_NEW_CS_CONSTANTS;
-
- f->NewWindowRectangles = ST_NEW_WINDOW_RECTANGLES;
- f->NewFramebufferSRGB = ST_NEW_FB_STATE;
- f->NewScissorRect = ST_NEW_SCISSOR;
- f->NewScissorTest = ST_NEW_SCISSOR | ST_NEW_RASTERIZER;
- f->NewAlphaTest = ST_NEW_DSA;
- f->NewBlend = ST_NEW_BLEND;
- f->NewBlendColor = ST_NEW_BLEND_COLOR;
- f->NewColorMask = ST_NEW_BLEND;
- f->NewDepth = ST_NEW_DSA;
- f->NewLogicOp = ST_NEW_BLEND;
- f->NewStencil = ST_NEW_DSA;
- f->NewMultisampleEnable = ST_NEW_BLEND | ST_NEW_RASTERIZER |
- ST_NEW_SAMPLE_MASK | ST_NEW_SAMPLE_SHADING;
- f->NewSampleAlphaToXEnable = ST_NEW_BLEND;
- f->NewSampleMask = ST_NEW_SAMPLE_MASK;
- f->NewSampleShading = ST_NEW_SAMPLE_SHADING;
-
- /* This depends on what the gallium driver wants. */
- if (st->force_persample_in_shader) {
- f->NewMultisampleEnable |= ST_NEW_FS_STATE;
- f->NewSampleShading |= ST_NEW_FS_STATE;
- } else {
- f->NewSampleShading |= ST_NEW_RASTERIZER;
- }
-
- f->NewClipControl = ST_NEW_VIEWPORT | ST_NEW_RASTERIZER;
- f->NewClipPlane = ST_NEW_CLIP_STATE;
- f->NewClipPlaneEnable = ST_NEW_RASTERIZER;
- f->NewDepthClamp = ST_NEW_RASTERIZER;
- f->NewLineState = ST_NEW_RASTERIZER;
- f->NewPolygonState = ST_NEW_RASTERIZER;
- f->NewPolygonStipple = ST_NEW_POLY_STIPPLE;
- f->NewViewport = ST_NEW_VIEWPORT;
-}
struct st_context *st_create_context(gl_api api, struct pipe_context *pipe,
const struct gl_config *visual,