diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen6_clip_state.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_clip_state.c | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c index 23d969b770b..2fffb673bfc 100644 --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c @@ -88,142 +88,3 @@ brw_is_drawing_lines(const struct brw_context *brw) return false; } -static void -upload_clip_state(struct brw_context *brw) -{ - struct gl_context *ctx = &brw->ctx; - /* BRW_NEW_META_IN_PROGRESS */ - uint32_t dw1 = brw->meta_in_progress ? 0 : GEN6_CLIP_STATISTICS_ENABLE; - uint32_t dw2 = 0; - - /* _NEW_BUFFERS */ - struct gl_framebuffer *fb = ctx->DrawBuffer; - - /* BRW_NEW_FS_PROG_DATA */ - if (brw_wm_prog_data(brw->wm.base.prog_data)->barycentric_interp_modes & - BRW_BARYCENTRIC_NONPERSPECTIVE_BITS) { - dw2 |= GEN6_CLIP_NON_PERSPECTIVE_BARYCENTRIC_ENABLE; - } - - /* BRW_NEW_VS_PROG_DATA */ - dw1 |= brw_vue_prog_data(brw->vs.base.prog_data)->cull_distance_mask; - - if (brw->gen >= 7) - dw1 |= GEN7_CLIP_EARLY_CULL; - - if (brw->gen == 7) { - /* _NEW_POLYGON */ - if (ctx->Polygon._FrontBit == _mesa_is_user_fbo(fb)) - dw1 |= GEN7_CLIP_WINDING_CCW; - - if (ctx->Polygon.CullFlag) { - switch (ctx->Polygon.CullFaceMode) { - case GL_FRONT: - dw1 |= GEN7_CLIP_CULLMODE_FRONT; - break; - case GL_BACK: - dw1 |= GEN7_CLIP_CULLMODE_BACK; - break; - case GL_FRONT_AND_BACK: - dw1 |= GEN7_CLIP_CULLMODE_BOTH; - break; - default: - unreachable("Should not get here: invalid CullFlag"); - } - } else { - dw1 |= GEN7_CLIP_CULLMODE_NONE; - } - } - - if (brw->gen < 8 && !ctx->Transform.DepthClamp) - dw2 |= GEN6_CLIP_Z_TEST; - - /* _NEW_LIGHT */ - if (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION) { - dw2 |= - (0 << GEN6_CLIP_TRI_PROVOKE_SHIFT) | - (1 << GEN6_CLIP_TRIFAN_PROVOKE_SHIFT) | - (0 << GEN6_CLIP_LINE_PROVOKE_SHIFT); - } else { - dw2 |= - (2 << GEN6_CLIP_TRI_PROVOKE_SHIFT) | - (2 << GEN6_CLIP_TRIFAN_PROVOKE_SHIFT) | - (1 << GEN6_CLIP_LINE_PROVOKE_SHIFT); - } - - /* _NEW_TRANSFORM */ - dw2 |= (ctx->Transform.ClipPlanesEnabled << - GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT); - - /* Have the hardware use the user clip distance clip test enable bitmask - * specified here in 3DSTATE_CLIP rather than the one in 3DSTATE_VS/DS/GS. - * We already listen to _NEW_TRANSFORM here, but the other atoms don't - * need to other than this. - */ - if (brw->gen >= 8) - dw1 |= GEN8_CLIP_FORCE_USER_CLIP_DISTANCE_BITMASK; - - if (ctx->Transform.ClipDepthMode == GL_ZERO_TO_ONE) - dw2 |= GEN6_CLIP_API_D3D; - else - dw2 |= GEN6_CLIP_API_OGL; - - dw2 |= GEN6_CLIP_GB_TEST; - - /* BRW_NEW_VIEWPORT_COUNT */ - const unsigned viewport_count = brw->clip.viewport_count; - - /* BRW_NEW_RASTERIZER_DISCARD */ - if (ctx->RasterDiscard) { - dw2 |= GEN6_CLIP_MODE_REJECT_ALL; - if (brw->gen == 6) { - perf_debug("Rasterizer discard is currently implemented via the " - "clipper; having the GS not write primitives would " - "likely be faster.\n"); - } - } - - uint32_t enable; - if (brw->primitive == _3DPRIM_RECTLIST) - enable = 0; - else - enable = GEN6_CLIP_ENABLE; - - /* _NEW_POLYGON, - * BRW_NEW_GEOMETRY_PROGRAM | BRW_NEW_TES_PROG_DATA | BRW_NEW_PRIMITIVE - */ - if (!brw_is_drawing_points(brw) && !brw_is_drawing_lines(brw)) - dw2 |= GEN6_CLIP_XY_TEST; - - BEGIN_BATCH(4); - OUT_BATCH(_3DSTATE_CLIP << 16 | (4 - 2)); - OUT_BATCH(dw1); - OUT_BATCH(enable | - GEN6_CLIP_MODE_NORMAL | - dw2); - OUT_BATCH(U_FIXED(0.125, 3) << GEN6_CLIP_MIN_POINT_WIDTH_SHIFT | - U_FIXED(255.875, 3) << GEN6_CLIP_MAX_POINT_WIDTH_SHIFT | - (_mesa_geometric_layers(fb) > 0 ? 0 : GEN6_CLIP_FORCE_ZERO_RTAINDEX) | - ((viewport_count - 1) & GEN6_CLIP_MAX_VP_INDEX_MASK)); - ADVANCE_BATCH(); -} - -const struct brw_tracked_state gen6_clip_state = { - .dirty = { - .mesa = _NEW_BUFFERS | - _NEW_LIGHT | - _NEW_POLYGON | - _NEW_TRANSFORM, - .brw = BRW_NEW_BLORP | - BRW_NEW_CONTEXT | - BRW_NEW_FS_PROG_DATA | - BRW_NEW_GS_PROG_DATA | - BRW_NEW_VS_PROG_DATA | - BRW_NEW_META_IN_PROGRESS | - BRW_NEW_PRIMITIVE | - BRW_NEW_RASTERIZER_DISCARD | - BRW_NEW_TES_PROG_DATA | - BRW_NEW_VIEWPORT_COUNT, - }, - .emit = upload_clip_state, -}; |