From ef2808f56fbf31c09b8bc61776a711e31e0e7ee2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 16 Sep 2010 21:48:02 +1000 Subject: r600g: fix texture bos and avoid doing depth blit on evergreen since the depth blit code is hardcoded hex yay \o/ --- src/gallium/drivers/r600/eg_hw_states.c | 12 ++---------- src/gallium/drivers/r600/r600_texture.c | 3 ++- 2 files changed, 4 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/r600/eg_hw_states.c b/src/gallium/drivers/r600/eg_hw_states.c index ae03994e8b..a58adc6bab 100644 --- a/src/gallium/drivers/r600/eg_hw_states.c +++ b/src/gallium/drivers/r600/eg_hw_states.c @@ -1065,21 +1065,13 @@ static void eg_texture_state_cb(struct r600_screen *rscreen, struct r600_resourc swap = r600_translate_colorswap(rtexture->resource.base.b.format); if (desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) { rstate->bo[0] = radeon_bo_incref(rscreen->rw, rtexture->uncompressed); - rstate->bo[1] = radeon_bo_incref(rscreen->rw, rtexture->uncompressed); - rstate->bo[2] = radeon_bo_incref(rscreen->rw, rtexture->uncompressed); rstate->placement[0] = RADEON_GEM_DOMAIN_GTT; - rstate->placement[2] = RADEON_GEM_DOMAIN_GTT; - rstate->placement[4] = RADEON_GEM_DOMAIN_GTT; - rstate->nbo = 3; + rstate->nbo = 1; color_info = 0; } else { rstate->bo[0] = radeon_bo_incref(rscreen->rw, rbuffer->bo); - rstate->bo[1] = radeon_bo_incref(rscreen->rw, rbuffer->bo); - rstate->bo[2] = radeon_bo_incref(rscreen->rw, rbuffer->bo); rstate->placement[0] = RADEON_GEM_DOMAIN_GTT; - rstate->placement[2] = RADEON_GEM_DOMAIN_GTT; - rstate->placement[4] = RADEON_GEM_DOMAIN_GTT; - rstate->nbo = 3; + rstate->nbo = 1; color_info = S_028C70_SOURCE_FORMAT(1); } color_info |= S_028C70_FORMAT(format) | diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index 158ae227b1..80cfa36ac0 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -314,6 +314,7 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx, void* r600_texture_transfer_map(struct pipe_context *ctx, struct pipe_transfer* transfer) { + struct r600_screen *rscreen = r600_screen(ctx->screen); struct r600_transfer *rtransfer = (struct r600_transfer*)transfer; struct radeon_bo *bo; enum pipe_format format = transfer->resource->format; @@ -328,7 +329,7 @@ void* r600_texture_transfer_map(struct pipe_context *ctx, bo = ((struct r600_resource *)rtransfer->linear_texture)->bo; } else { rtex = (struct r600_resource_texture*)transfer->resource; - if (rtex->depth) { + if (rtex->depth && rscreen->chip_class != EVERGREEN) { r = r600_texture_from_depth(ctx, rtex, transfer->sr.level); if (r) { return NULL; -- cgit v1.2.3