No subject


Thu Oct 13 22:17:55 PDT 2011


the mag and min filter as the condition. But in this patch, the round
mode is set according to the mag and min filter. So, the results would
be the same. And, IVB don't have this bit.

> 
> Does adding the following code at about line 227 of brw_wm_sampler.c
> make any additional tests pass on SNB?

Sorry, I didn't make it clear. Here the word 'several' means all the
fails with the same issue. As the there are still about three fails that
not belong this issue in the pbo test suite. My bad.

> 
>    if (intel->gen >= 6)
>       sampler->ss0.min_mag_neq =
>          sampler->ss0.min_filter != sampler->ss0.mag_filter;


> 
> >Signed-off-by: Yuanhan Liu<yuanhan.liu at linux.intel.com>
> >---
> >  src/mesa/drivers/dri/i965/brw_defines.h          |    7 +++++++
> >  src/mesa/drivers/dri/i965/brw_wm_sampler_state.c |    9 +++++++++
> >  src/mesa/drivers/dri/i965/gen7_sampler_state.c   |    9 +++++++++
> >  3 files changed, 25 insertions(+), 0 deletions(-)
> >
> >diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
> >index a111630..e4647ff 100644
> >--- a/src/mesa/drivers/dri/i965/brw_defines.h
> >+++ b/src/mesa/drivers/dri/i965/brw_defines.h
> >@@ -196,6 +196,13 @@
> >  #define BRW_MIPFILTER_NEAREST     1
> >  #define BRW_MIPFILTER_LINEAR      3
> >
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_U_MAG	0x20
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_U_MIN	0x10
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_V_MAG	0x08
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_V_MIN	0x04
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_R_MAG	0x02
> >+#define BRW_ADDRESS_ROUNDING_ENABLE_R_MIN	0x01
> >+
> >  #define BRW_POLYGON_FRONT_FACING     0
> >  #define BRW_POLYGON_BACK_FACING      1
> >
> >diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> >index 6834eba..9fc1c1a 100644
> >--- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> >+++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> >@@ -312,6 +312,15 @@ static void brw_update_sampler_state(struct brw_context *brw,
> >  			      intel->batch.bo, brw->wm.sdc_offset[unit],
> >  			      I915_GEM_DOMAIN_SAMPLER, 0);
> >     }
> >+
> >+   if (sampler->ss0.min_filter != BRW_MAPFILTER_NEAREST)
> >+      sampler->ss3.address_round = BRW_ADDRESS_ROUNDING_ENABLE_U_MIN |
> >+                                   BRW_ADDRESS_ROUNDING_ENABLE_V_MIN |
> >+                                   BRW_ADDRESS_ROUNDING_ENABLE_R_MIN;
> >+   if (sampler->ss0.mag_filter != BRW_MAPFILTER_NEAREST)
> >+      sampler->ss3.address_round |= BRW_ADDRESS_ROUNDING_ENABLE_U_MAG |
> >+                                    BRW_ADDRESS_ROUNDING_ENABLE_V_MAG |
> >+                                    BRW_ADDRESS_ROUNDING_ENABLE_R_MAG;
> 
> It looks weird that one of these cases use = and the other uses |=. It
> would be better to assign 0 to ss3.address_round before the first case
> and use |= in both cases.

Yes, will fix it later.

Thanks,
Yuanhan Liu

> 
> >  }
> >
> >
> >diff --git a/src/mesa/drivers/dri/i965/gen7_sampler_state.c b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> >index aee67c8..5fab91c 100644
> >--- a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> >+++ b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> >@@ -167,6 +167,15 @@ gen7_update_sampler_state(struct brw_context *brw, int unit,
> >     upload_default_color(brw, gl_sampler, unit);
> >
> >     sampler->ss2.default_color_pointer = brw->wm.sdc_offset[unit]>>  5;
> >+
> >+   if (sampler->ss0.min_filter != BRW_MAPFILTER_NEAREST)
> >+      sampler->ss3.address_round = BRW_ADDRESS_ROUNDING_ENABLE_U_MIN |
> >+                                   BRW_ADDRESS_ROUNDING_ENABLE_V_MIN |
> >+                                   BRW_ADDRESS_ROUNDING_ENABLE_R_MIN;
> >+   if (sampler->ss0.mag_filter != BRW_MAPFILTER_NEAREST)
> >+      sampler->ss3.address_round |= BRW_ADDRESS_ROUNDING_ENABLE_U_MAG |
> >+                                    BRW_ADDRESS_ROUNDING_ENABLE_V_MAG |
> >+                                    BRW_ADDRESS_ROUNDING_ENABLE_R_MAG;
> 
> Same comment here as above.
> 
> >  }
> >
> >


More information about the mesa-dev mailing list