gallium: Enable ARB_clip_control for gallium drivers.
Gallium should be prepared fine for ARB_clip_control. So enable this and mention it in the release notes. v2: Only enable for drivers announcing the freshly introduced PIPE_CAP_CLIP_HALFZ capability. v3: Use extension enable infrastructure to connect PIPE_CAP_CLIP_HALFZ with ARB_clip_control. Reviewed-by: Brian Paul <brianp@vmware.com> Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
This commit is contained in:
@@ -187,7 +187,7 @@ GL 4.4, GLSL 4.40:
|
||||
GL 4.5, GLSL 4.50:
|
||||
|
||||
GL_ARB_ES3_1_compatibility not started
|
||||
GL_ARB_clip_control not started
|
||||
GL_ARB_clip_control DONE (llvmpipe, softpipe, r300, r600, radeonsi)
|
||||
GL_ARB_conditional_render_inverted DONE (i965, nvc0, llvmpipe, softpipe)
|
||||
GL_ARB_cull_distance not started
|
||||
GL_ARB_derivative_control DONE (i965, nv50, nvc0, r600)
|
||||
|
@@ -46,6 +46,7 @@ Note: some of the new features are only available with certain drivers.
|
||||
<ul>
|
||||
<li>GL_ARB_sample_shading on r600</li>
|
||||
<li>GL_ARB_texture_view on nv50, nvc0</li>
|
||||
<li>GL_ARB_clip_control on llvmpipe, softpipe, r300, r600, radeonsi</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@@ -72,6 +72,11 @@ static void update_raster_state( struct st_context *st )
|
||||
{
|
||||
raster->front_ccw = (ctx->Polygon.FrontFace == GL_CCW);
|
||||
|
||||
/* _NEW_VIEWPORT */
|
||||
if (ctx->Transform.ClipOrigin == GL_UPPER_LEFT) {
|
||||
raster->front_ccw ^= 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Gallium's surfaces are Y=0=TOP orientation. OpenGL is the
|
||||
* opposite. Window system surfaces are Y=0=TOP. Mesa's FBOs
|
||||
@@ -241,6 +246,12 @@ static void update_raster_state( struct st_context *st )
|
||||
raster->half_pixel_center = 1;
|
||||
if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP)
|
||||
raster->bottom_edge_rule = 1;
|
||||
/* _NEW_VIEWPORT */
|
||||
if (ctx->Transform.ClipOrigin == GL_UPPER_LEFT)
|
||||
raster->bottom_edge_rule ^= 1;
|
||||
|
||||
/* _NEW_VIEWPORT */
|
||||
raster->clip_halfz = (ctx->Transform.ClipDepthMode == GL_ZERO_TO_ONE);
|
||||
|
||||
/* ST_NEW_RASTERIZER */
|
||||
raster->rasterizer_discard = ctx->RasterDiscard;
|
||||
@@ -272,7 +283,8 @@ const struct st_tracked_state st_update_rasterizer = {
|
||||
_NEW_PROGRAM |
|
||||
_NEW_SCISSOR |
|
||||
_NEW_FRAG_CLAMP |
|
||||
_NEW_TRANSFORM), /* mesa state dependencies*/
|
||||
_NEW_TRANSFORM |
|
||||
_NEW_VIEWPORT), /* mesa state dependencies*/
|
||||
(ST_NEW_VERTEX_PROGRAM |
|
||||
ST_NEW_RASTERIZER), /* state tracker dependencies */
|
||||
},
|
||||
|
@@ -463,6 +463,7 @@ void st_init_extensions(struct pipe_screen *screen,
|
||||
{ o(ARB_derivative_control), PIPE_CAP_TGSI_FS_FINE_DERIVATIVE },
|
||||
{ o(ARB_conditional_render_inverted), PIPE_CAP_CONDITIONAL_RENDER_INVERTED },
|
||||
{ o(ARB_texture_view), PIPE_CAP_SAMPLER_VIEW_TARGET },
|
||||
{ o(ARB_clip_control), PIPE_CAP_CLIP_HALFZ },
|
||||
};
|
||||
|
||||
/* Required: render target and sampler support */
|
||||
|
Reference in New Issue
Block a user