anv/gen7: Make disabling the FS work
authorKristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
Mon, 15 Feb 2016 07:03:13 +0000 (23:03 -0800)
committerKristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
Tue, 16 Feb 2016 01:32:07 +0000 (17:32 -0800)
We disable the fragment shader for depth/stencil-only pipelines. This
commit makes that work for gen7.

src/vulkan/gen7_pipeline.c

index 4ec9cf5f019060040768db7b6ecd886264eeacdd..e329c8f42ab9de0d5adeb762360058c55171b740 100644 (file)
@@ -323,9 +323,23 @@ genX(graphics_pipeline_create)(
    }
 
    if (pipeline->ps_ksp0 == NO_KERNEL) {
-      anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PS));
-      anv_finishme("gen7 alternative to "
-                   "3DSTATE_PS_EXTRA.PixelShaderValid = false");
+     anv_finishme("disabling ps");
+
+     /* FIXME: generated header doesn't emit attr swizzle fields */
+     anv_batch_emit(&pipeline->batch, GEN7_3DSTATE_SBE);
+
+     /* FIXME-GEN7: This needs a lot more work, cf gen7 upload_wm_state(). */
+     anv_batch_emit(&pipeline->batch, GEN7_3DSTATE_WM,
+                   .StatisticsEnable                         = true,
+                   .ThreadDispatchEnable                     = false,
+                   .LineEndCapAntialiasingRegionWidth        = 0, /* 0.5 pixels */
+                   .LineAntialiasingRegionWidth              = 1, /* 1.0 pixels */
+                   .EarlyDepthStencilControl                 = EDSC_NORMAL,
+                   .PointRasterizationRule                   = RASTRULE_UPPER_RIGHT);
+
+
+     anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PS));
+
    } else {
       const struct brw_wm_prog_data *wm_prog_data = &pipeline->wm_prog_data;
       if (wm_prog_data->urb_setup[VARYING_SLOT_BFC0] != -1 ||