diff options
author | Jason Ekstrand <[email protected]> | 2016-11-12 10:58:48 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2016-11-16 10:08:56 -0800 |
commit | 5a10ab8a1562e0217b916618d30cb23165b2c679 (patch) | |
tree | cf604a2c0685f13d3380e2d26e1c2157b99718e2 | |
parent | 7fe6655aad69b32fc56243b3d3556d96184e882c (diff) |
anv/pipeline: Make emit_3dstate_sbe safe to call without a FS
Reviewed-by: Kristian H. Kristensen <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r-- | src/intel/vulkan/gen7_pipeline.c | 5 | ||||
-rw-r--r-- | src/intel/vulkan/gen8_pipeline.c | 3 | ||||
-rw-r--r-- | src/intel/vulkan/genX_pipeline_util.h | 8 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/intel/vulkan/gen7_pipeline.c b/src/intel/vulkan/gen7_pipeline.c index 52577f5ecae..3765d14b909 100644 --- a/src/intel/vulkan/gen7_pipeline.c +++ b/src/intel/vulkan/gen7_pipeline.c @@ -106,10 +106,9 @@ genX(graphics_pipeline_create)( emit_3dstate_vs(pipeline); emit_3dstate_gs(pipeline); + emit_3dstate_sbe(pipeline); if (!anv_pipeline_has_stage(pipeline, MESA_SHADER_FRAGMENT)) { - anv_batch_emit(&pipeline->batch, GENX(3DSTATE_SBE), sbe); - anv_batch_emit(&pipeline->batch, GENX(3DSTATE_WM), wm) { wm.StatisticsEnable = true; wm.ThreadDispatchEnable = false; @@ -136,8 +135,6 @@ genX(graphics_pipeline_create)( if (wm_prog_data->urb_setup[VARYING_SLOT_PRIMITIVE_ID] != -1) anv_finishme("primitive_id needs sbe swizzling setup"); - emit_3dstate_sbe(pipeline); - anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PS), ps) { ps.KernelStartPointer0 = fs_bin->kernel.offset; ps.KernelStartPointer1 = 0; diff --git a/src/intel/vulkan/gen8_pipeline.c b/src/intel/vulkan/gen8_pipeline.c index 5816bd42284..f2499dc0f53 100644 --- a/src/intel/vulkan/gen8_pipeline.c +++ b/src/intel/vulkan/gen8_pipeline.c @@ -111,6 +111,7 @@ genX(graphics_pipeline_create)( emit_3dstate_gs(pipeline); emit_3dstate_vs(pipeline); + emit_3dstate_sbe(pipeline); const int num_thread_bias = GEN_GEN == 8 ? 2 : 1; if (!anv_pipeline_has_stage(pipeline, MESA_SHADER_FRAGMENT)) { @@ -122,8 +123,6 @@ genX(graphics_pipeline_create)( const struct anv_shader_bin *fs_bin = pipeline->shaders[MESA_SHADER_FRAGMENT]; - emit_3dstate_sbe(pipeline); - anv_batch_emit(&pipeline->batch, GENX(3DSTATE_PS), ps) { ps.KernelStartPointer0 = fs_bin->kernel.offset; ps.KernelStartPointer1 = 0; diff --git a/src/intel/vulkan/genX_pipeline_util.h b/src/intel/vulkan/genX_pipeline_util.h index 515cc9a0a48..3906529713f 100644 --- a/src/intel/vulkan/genX_pipeline_util.h +++ b/src/intel/vulkan/genX_pipeline_util.h @@ -366,6 +366,14 @@ emit_3dstate_sbe(struct anv_pipeline *pipeline) const struct brw_wm_prog_data *wm_prog_data = get_wm_prog_data(pipeline); const struct brw_vue_map *fs_input_map; + if (!anv_pipeline_has_stage(pipeline, MESA_SHADER_FRAGMENT)) { + anv_batch_emit(&pipeline->batch, GENX(3DSTATE_SBE), sbe); +#if GEN_GEN >= 8 + anv_batch_emit(&pipeline->batch, GENX(3DSTATE_SBE_SWIZ), sbe); +#endif + return; + } + if (gs_prog_data) fs_input_map = &gs_prog_data->base.vue_map; else |