Reviewed-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com>
On 06/04/16 05:12, Jason Ekstrand wrote: > 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. > --- > src/mesa/drivers/dri/i965/brw_state.h | 1 - > src/mesa/drivers/dri/i965/gen6_sf_state.c | 21 ++------------------- > src/mesa/drivers/dri/i965/gen7_sf_state.c | 6 ++---- > src/mesa/drivers/dri/i965/gen8_sf_state.c | 4 +--- > 4 files changed, 5 insertions(+), 27 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_state.h > b/src/mesa/drivers/dri/i965/brw_state.h > index 783af78..2dc0a0d 100644 > --- a/src/mesa/drivers/dri/i965/brw_state.h > +++ b/src/mesa/drivers/dri/i965/brw_state.h > @@ -368,7 +368,6 @@ 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); > > 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(); > diff --git a/src/mesa/drivers/dri/i965/gen7_sf_state.c > b/src/mesa/drivers/dri/i965/gen7_sf_state.c > index 7c98c73..c76789f 100644 > --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c > +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c > @@ -38,7 +38,6 @@ upload_sbe_state(struct brw_context *brw) > uint32_t num_outputs = brw->wm.prog_data->num_varying_inputs; > uint32_t dw1; > uint32_t point_sprite_enables; > - uint32_t flat_enables; > int i; > uint16_t attr_overrides[16]; > /* _NEW_BUFFERS */ > @@ -66,8 +65,7 @@ upload_sbe_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 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT | > urb_entry_read_offset << GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT; > > @@ -81,7 +79,7 @@ upload_sbe_state(struct brw_context *brw) > } > > OUT_BATCH(point_sprite_enables); /* dw10 */ > - 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(); > diff --git a/src/mesa/drivers/dri/i965/gen8_sf_state.c > b/src/mesa/drivers/dri/i965/gen8_sf_state.c > index 2ac21f7..5a97c1d 100644 > --- a/src/mesa/drivers/dri/i965/gen8_sf_state.c > +++ b/src/mesa/drivers/dri/i965/gen8_sf_state.c > @@ -39,7 +39,6 @@ upload_sbe(struct brw_context *brw) > uint32_t urb_entry_read_length; > uint32_t urb_entry_read_offset; > uint32_t point_sprite_enables; > - uint32_t flat_enables; > int sbe_cmd_length; > > uint32_t dw1 = > @@ -66,7 +65,6 @@ upload_sbe(struct brw_context *brw) > */ > calculate_attr_overrides(brw, attr_overrides, > &point_sprite_enables, > - &flat_enables, > &urb_entry_read_length, > &urb_entry_read_offset); > > @@ -109,7 +107,7 @@ upload_sbe(struct brw_context *brw) > OUT_BATCH(_3DSTATE_SBE << 16 | (sbe_cmd_length - 2)); > OUT_BATCH(dw1); > OUT_BATCH(point_sprite_enables); > - OUT_BATCH(flat_enables); > + OUT_BATCH(brw->wm.prog_data->flat_inputs); > if (sbe_cmd_length >= 6) { > OUT_BATCH(dw4); > OUT_BATCH(dw5); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev