+ raster->scissor = !!ctx->Scissor.EnableFlags;
+
+ /* gl_driver_flags::NewFragClamp */
+ raster->clamp_fragment_color = !st->clamp_frag_color_in_shader &&
+ ctx->Color._ClampFragmentColor;
+
+ raster->half_pixel_center = 1;
+ if (st->state.fb_orientation == Y_0_TOP)
+ raster->bottom_edge_rule = 1;
+
+ /* _NEW_TRANSFORM */
+ if (ctx->Transform.ClipOrigin == GL_UPPER_LEFT)
+ raster->bottom_edge_rule ^= 1;
+
+ /* ST_NEW_RASTERIZER */
+ raster->rasterizer_discard = ctx->RasterDiscard;
+ if (ctx->TileRasterOrderFixed) {
+ raster->tile_raster_order_fixed = true;
+ raster->tile_raster_order_increasing_x = ctx->TileRasterOrderIncreasingX;
+ raster->tile_raster_order_increasing_y = ctx->TileRasterOrderIncreasingY;
+ }
+
+ if (st->edgeflag_culls_prims) {
+ /* All edge flags are FALSE. Cull the affected faces. */
+ if (raster->fill_front != PIPE_POLYGON_MODE_FILL)
+ raster->cull_face |= PIPE_FACE_FRONT;
+ if (raster->fill_back != PIPE_POLYGON_MODE_FILL)
+ raster->cull_face |= PIPE_FACE_BACK;
+ }