summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2017-01-10 12:46:25 +0000
committerLionel Landwerlin <[email protected]>2017-01-10 18:14:36 +0000
commit4b44ca72250745228f5eeb0fd3e0fddf51e99963 (patch)
tree9cf0f2e7f98a7d6a81aff5bf1dfe51bffd66b08d
parent59fe3796a8f3d89feae5b4ec9439f63cc9bb2662 (diff)
anv: add helper to get vue map for fragment shader
Signed-off-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/intel/vulkan/anv_private.h11
-rw-r--r--src/intel/vulkan/genX_pipeline.c7
2 files changed, 12 insertions, 6 deletions
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 8a69aa22f64..dbc8c3cf68a 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1482,6 +1482,17 @@ ANV_DECL_GET_PROG_DATA_FUNC(gs, MESA_SHADER_GEOMETRY)
ANV_DECL_GET_PROG_DATA_FUNC(wm, MESA_SHADER_FRAGMENT)
ANV_DECL_GET_PROG_DATA_FUNC(cs, MESA_SHADER_COMPUTE)
+static inline const struct brw_vue_map *
+anv_pipeline_get_fs_input_map(const struct anv_pipeline *pipeline)
+{
+ if (anv_pipeline_has_stage(pipeline, MESA_SHADER_GEOMETRY))
+ return &get_gs_prog_data(pipeline)->base.vue_map;
+ else if (anv_pipeline_has_stage(pipeline, MESA_SHADER_TESS_EVAL))
+ return &get_tes_prog_data(pipeline)->base.vue_map;
+ else
+ return &get_vs_prog_data(pipeline)->base.vue_map;
+}
+
VkResult
anv_pipeline_init(struct anv_pipeline *pipeline, struct anv_device *device,
struct anv_pipeline_cache *cache,
diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index 90968b490f7..20ba5b63ae0 100644
--- a/src/intel/vulkan/genX_pipeline.c
+++ b/src/intel/vulkan/genX_pipeline.c
@@ -285,8 +285,6 @@ emit_urb_setup(struct anv_pipeline *pipeline)
static void
emit_3dstate_sbe(struct anv_pipeline *pipeline)
{
- const struct brw_vs_prog_data *vs_prog_data = get_vs_prog_data(pipeline);
- const struct brw_gs_prog_data *gs_prog_data = get_gs_prog_data(pipeline);
const struct brw_wm_prog_data *wm_prog_data = get_wm_prog_data(pipeline);
const struct brw_vue_map *fs_input_map;
@@ -298,10 +296,7 @@ emit_3dstate_sbe(struct anv_pipeline *pipeline)
return;
}
- if (gs_prog_data)
- fs_input_map = &gs_prog_data->base.vue_map;
- else
- fs_input_map = &vs_prog_data->base.vue_map;
+ fs_input_map = anv_pipeline_get_fs_input_map(pipeline);
struct GENX(3DSTATE_SBE) sbe = {
GENX(3DSTATE_SBE_header),