i915g: enable X-tiling for textures

Tiling is rather fragile in general and results in pure blackness when
unlucky.  Hence add a new option to disable tiling.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jakob Bornecrantz <wallbraker@gmail.com>
Signed-off-by: Jakob Bornecrantz <wallbraker@gmail.com>
This commit is contained in:
Daniel Vetter 2010-11-20 11:17:55 +01:00 committed by Jakob Bornecrantz
parent 32345610cc
commit 9493fe85d1
3 changed files with 27 additions and 0 deletions

View file

@ -46,10 +46,12 @@ static const struct debug_named_value debug_options[] = {
};
unsigned i915_debug = 0;
boolean i915_tiling = TRUE;
void i915_debug_init(struct i915_screen *screen)
{
i915_debug = debug_get_flags_option("I915_DEBUG", debug_options, 0);
i915_tiling = !debug_get_bool_option("I915_NO_TILING", FALSE);
}

View file

@ -46,6 +46,7 @@ struct i915_winsys_batchbuffer;
#define DBG_CONSTANTS 0x20
extern unsigned i915_debug;
extern boolean i915_tiling;
#ifdef DEBUG
static INLINE boolean

View file

@ -154,6 +154,26 @@ i915_texture_set_image_offset(struct i915_texture *tex,
#endif
}
static enum i915_winsys_buffer_tile
i915_texture_tiling(struct pipe_resource *pt)
{
if (!i915_tiling)
return I915_TILE_NONE;
if (pt->target == PIPE_TEXTURE_1D)
return I915_TILE_NONE;
if (util_format_is_s3tc(pt->format))
/* XXX X-tiling might make sense */
return I915_TILE_NONE;
if ((pt->bind & PIPE_BIND_RENDER_TARGET))
/* XXX We can't render properly into mipmap'ed textures */
return I915_TILE_NONE;
return I915_TILE_X;
}
/*
* Shared layout functions
@ -370,6 +390,8 @@ i915_texture_layout(struct i915_texture * tex)
{
struct pipe_resource *pt = &tex->b.b;
tex->tiling = i915_texture_tiling(pt);
switch (pt->target) {
case PIPE_TEXTURE_1D:
case PIPE_TEXTURE_2D:
@ -616,6 +638,8 @@ i945_texture_layout(struct i915_texture * tex)
{
struct pipe_resource *pt = &tex->b.b;
tex->tiling = i915_texture_tiling(pt);
switch (pt->target) {
case PIPE_TEXTURE_1D:
case PIPE_TEXTURE_2D: