diff options
| -rw-r--r-- | src/gallium/drivers/i915/i915_reg.h | 2 | ||||
| -rw-r--r-- | src/gallium/drivers/i915/i915_state_emit.c | 3 | ||||
| -rw-r--r-- | src/gallium/drivers/i915/i915_state_sampler.c | 20 | 
3 files changed, 20 insertions, 5 deletions
| diff --git a/src/gallium/drivers/i915/i915_reg.h b/src/gallium/drivers/i915/i915_reg.h index cc28891e4a..1f6d8ac76b 100644 --- a/src/gallium/drivers/i915/i915_reg.h +++ b/src/gallium/drivers/i915/i915_reg.h @@ -753,7 +753,7 @@  #define    MT_COMPRESS_DXT1_RGB		   (4<<3)  #define MS3_USE_FENCE_REGS              (1<<2)  #define MS3_TILED_SURFACE             (1<<1) -#define MS3_TILE_WALK                 (1<<0) +#define MS3_TILE_WALK_Y                (1<<0)  #define MS4_PITCH_SHIFT                 21  #define MS4_CUBE_FACE_ENA_NEGX          (1<<20) diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c index 803cc90285..8d912cadc1 100644 --- a/src/gallium/drivers/i915/i915_state_emit.c +++ b/src/gallium/drivers/i915/i915_state_emit.c @@ -308,12 +308,11 @@ i915_emit_hardware_state(struct i915_context *i915 )                 if (enabled & (1 << unit)) {                    struct i915_texture *texture = i915_texture(i915->fragment_sampler_views[unit]->texture);                    struct i915_winsys_buffer *buf = texture->buffer; -                  uint offset = 0;                    assert(buf);                    count++; -                  OUT_RELOC_FENCED(buf, I915_USAGE_SAMPLER, offset); +                  OUT_RELOC(buf, I915_USAGE_SAMPLER, 0);                    OUT_BATCH(i915->current.texbuffer[unit][0]); /* MS3 */                    OUT_BATCH(i915->current.texbuffer[unit][1]); /* MS4 */                 } diff --git a/src/gallium/drivers/i915/i915_state_sampler.c b/src/gallium/drivers/i915/i915_state_sampler.c index 9771274ca1..916cb76753 100644 --- a/src/gallium/drivers/i915/i915_state_sampler.c +++ b/src/gallium/drivers/i915/i915_state_sampler.c @@ -243,6 +243,23 @@ static uint translate_texture_format(enum pipe_format pipeFormat)     }  } +static inline uint32_t +ms3_tiling_bits(enum i915_winsys_buffer_tile tiling) +{ +         uint32_t tiling_bits = 0; + +         switch (tiling) { +         case I915_TILE_Y: +            tiling_bits |= MS3_TILE_WALK_Y; +         case I915_TILE_X: +            tiling_bits |= MS3_TILED_SURFACE; +         case I915_TILE_NONE: +            break; +         } + +         return tiling_bits; +} +  static void update_map(struct i915_context *i915,                         uint unit,                         const struct i915_texture *tex, @@ -254,7 +271,6 @@ static void update_map(struct i915_context *i915,     const uint width = pt->width0, height = pt->height0, depth = pt->depth0;     const uint num_levels = pt->last_level;     unsigned max_lod = num_levels * 4; -   unsigned tiled = MS3_USE_FENCE_REGS;     assert(tex);     assert(width); @@ -272,7 +288,7 @@ static void update_map(struct i915_context *i915,        (((height - 1) << MS3_HEIGHT_SHIFT)         | ((width - 1) << MS3_WIDTH_SHIFT)         | format -       | tiled); +       | ms3_tiling_bits(tex->tiling));     /*      * XXX When min_filter != mag_filter and there's just one mipmap level, | 
