diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-04-05 18:23:36 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-04-06 18:08:56 -0700 |
commit | c62db279b6bc4e820345f468c00d4fd65be8556b (patch) | |
tree | 1120e28b6e0a7edb81c4bd17dd5b499d7664793b /src/mesa/drivers/dri/i965/gen6_sf_state.c | |
parent | e61cc87c757f8bc0b6a3af318a512b22c072595c (diff) | |
download | external_mesa3d-c62db279b6bc4e820345f468c00d4fd65be8556b.zip external_mesa3d-c62db279b6bc4e820345f468c00d4fd65be8556b.tar.gz external_mesa3d-c62db279b6bc4e820345f468c00d4fd65be8556b.tar.bz2 |
i965/sf_state: Pull flat_enables out of prog_data
Previously, we were walking over the shader source to figure out which
inputs should be marked flat. Now, we can just pull it out of prog_data.
This is needed for properly setting up 3DSTATE_SF/SBE for Vulkan and it
also means that it will get properly cached.
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen6_sf_state.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_sf_state.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c index 42f9a5c..4fdcb8d 100644 --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c @@ -155,14 +155,12 @@ void calculate_attr_overrides(const struct brw_context *brw, uint16_t *attr_overrides, uint32_t *point_sprite_enables, - uint32_t *flat_enables, uint32_t *urb_entry_read_length, uint32_t *urb_entry_read_offset) { uint32_t max_source_attr = 0; *point_sprite_enables = 0; - *flat_enables = 0; *urb_entry_read_offset = BRW_SF_URB_ENTRY_READ_OFFSET; @@ -180,9 +178,6 @@ calculate_attr_overrides(const struct brw_context *brw, *urb_entry_read_offset = fs_needs_vue_header ? 0 : 1; - /* _NEW_LIGHT */ - bool shade_model_flat = brw->ctx.Light.ShadeModel == GL_FLAT; - /* From the Ivybridge PRM, Vol 2 Part 1, 3DSTATE_SBE, * description of dw10 Point Sprite Texture Coordinate Enable: * @@ -208,10 +203,6 @@ calculate_attr_overrides(const struct brw_context *brw, memset(attr_overrides, 0, 16*sizeof(*attr_overrides)); for (int attr = 0; attr < VARYING_SLOT_MAX; attr++) { - /* BRW_NEW_FRAGMENT_PROGRAM */ - enum glsl_interp_qualifier interp_qualifier = - brw->fragment_program->InterpQualifier[attr]; - bool is_gl_Color = attr == VARYING_SLOT_COL0 || attr == VARYING_SLOT_COL1; /* BRW_NEW_FS_PROG_DATA */ int input_index = brw->wm.prog_data->urb_setup[attr]; @@ -234,12 +225,6 @@ calculate_attr_overrides(const struct brw_context *brw, *point_sprite_enables |= (1 << input_index); } - /* flat shading */ - if (interp_qualifier == INTERP_QUALIFIER_FLAT || - (shade_model_flat && is_gl_Color && - interp_qualifier == INTERP_QUALIFIER_NONE)) - *flat_enables |= (1 << input_index); - /* BRW_NEW_VUE_MAP_GEOM_OUT | _NEW_LIGHT | _NEW_PROGRAM */ uint16_t attr_override = point_sprite ? 0 : get_attr_override(&brw->vue_map_geom_out, @@ -285,7 +270,6 @@ upload_sf_state(struct brw_context *brw) uint32_t num_outputs = brw->wm.prog_data->num_varying_inputs; uint32_t dw1, dw2, dw3, dw4; uint32_t point_sprite_enables; - uint32_t flat_enables; int i; /* _NEW_BUFFER */ bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer); @@ -428,8 +412,7 @@ upload_sf_state(struct brw_context *brw) uint32_t urb_entry_read_length; uint32_t urb_entry_read_offset; calculate_attr_overrides(brw, attr_overrides, &point_sprite_enables, - &flat_enables, &urb_entry_read_length, - &urb_entry_read_offset); + &urb_entry_read_length, &urb_entry_read_offset); dw1 |= (urb_entry_read_length << GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT | urb_entry_read_offset << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT); @@ -446,7 +429,7 @@ upload_sf_state(struct brw_context *brw) OUT_BATCH(attr_overrides[i * 2] | attr_overrides[i * 2 + 1] << 16); } OUT_BATCH(point_sprite_enables); /* dw16 */ - OUT_BATCH(flat_enables); + OUT_BATCH(brw->wm.prog_data->flat_inputs); OUT_BATCH(0); /* wrapshortest enables 0-7 */ OUT_BATCH(0); /* wrapshortest enables 8-15 */ ADVANCE_BATCH(); |