void gen6_draw_clip(struct ilo_render *r, const struct ilo_state_vector *vec, struct ilo_render_draw_session *session) { /* 3DSTATE_CLIP */ if (DIRTY(RASTERIZER) || DIRTY(FS) || DIRTY(VIEWPORT) || DIRTY(FB)) { bool enable_guardband = true; unsigned i; /* * Gen8+ has viewport extent test. Guard band test can be enabled on * prior Gens only when the viewport is larger than the framebuffer, * unless we emulate viewport extent test on them. */ if (ilo_dev_gen(r->dev) < ILO_GEN(8)) { for (i = 0; i < vec->viewport.count; i++) { const struct ilo_viewport_cso *vp = &vec->viewport.cso[i]; if (vp->min_x > 0.0f || vp->max_x < vec->fb.state.width || vp->min_y > 0.0f || vp->max_y < vec->fb.state.height) { enable_guardband = false; break; } } } gen6_3DSTATE_CLIP(r->builder, vec->rasterizer, vec->fs, enable_guardband, 1); } }
void gen6_draw_clip(struct ilo_render *r, const struct ilo_state_vector *vec, struct ilo_render_draw_session *session) { /* 3DSTATE_CLIP */ if (DIRTY(RASTERIZER) || DIRTY(FS) || DIRTY(VIEWPORT) || DIRTY(FB)) { bool enable_guardband = true; unsigned i; /* * We do not do 2D clipping yet. Guard band test should only be enabled * when the viewport is larger than the framebuffer. */ for (i = 0; i < vec->viewport.count; i++) { const struct ilo_viewport_cso *vp = &vec->viewport.cso[i]; if (vp->min_x > 0.0f || vp->max_x < vec->fb.state.width || vp->min_y > 0.0f || vp->max_y < vec->fb.state.height) { enable_guardband = false; break; } } gen6_3DSTATE_CLIP(r->builder, vec->rasterizer, vec->fs, enable_guardband, 1); } }
static void gen7_rectlist_vs_to_sf(struct ilo_render *r, const struct ilo_blitter *blitter) { gen7_3DSTATE_CONSTANT_VS(r->builder, NULL, NULL, 0); gen6_3DSTATE_VS(r->builder, &blitter->vs, 0); gen7_3DSTATE_CONSTANT_HS(r->builder, NULL, NULL, 0); gen7_3DSTATE_HS(r->builder, &blitter->hs, 0); gen7_3DSTATE_TE(r->builder, &blitter->ds); gen7_3DSTATE_CONSTANT_DS(r->builder, NULL, NULL, 0); gen7_3DSTATE_DS(r->builder, &blitter->ds, 0); gen7_3DSTATE_CONSTANT_GS(r->builder, NULL, NULL, 0); gen7_3DSTATE_GS(r->builder, &blitter->gs, 0); gen7_3DSTATE_STREAMOUT(r->builder, &blitter->sol); gen6_3DSTATE_CLIP(r->builder, &blitter->fb.rs); if (ilo_dev_gen(r->dev) == ILO_GEN(7)) gen7_wa_pre_3dstate_sf_depth_bias(r); gen7_3DSTATE_SF(r->builder, &blitter->fb.rs); gen7_3DSTATE_SBE(r->builder, &blitter->sbe); }