diff options
Diffstat (limited to 'src/mesa/state_tracker/st_context.c')
-rw-r--r-- | src/mesa/state_tracker/st_context.c | 123 |
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, |