anv: add helper to get vue map for fragment shader

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Lionel Landwerlin 2017-01-10 12:46:25 +00:00
parent 59fe3796a8
commit 4b44ca7225
2 changed files with 12 additions and 6 deletions

View file

@ -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,

View file

@ -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),