Exemplo n.º 1
0
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);
   }
}
Exemplo n.º 2
0
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);
   }
}
Exemplo n.º 3
0
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);
}