From 4b44ca72250745228f5eeb0fd3e0fddf51e99963 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Tue, 10 Jan 2017 12:46:25 +0000 Subject: anv: add helper to get vue map for fragment shader Signed-off-by: Lionel Landwerlin Reviewed-by: Jason Ekstrand --- src/intel/vulkan/anv_private.h | 11 +++++++++++ src/intel/vulkan/genX_pipeline.c | 7 +------ 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src/intel') 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), -- cgit v1.2.3