From: Henri Verbeet Date: Tue, 1 Feb 2011 00:17:02 +0000 (+0100) Subject: r600g: Actually use the info from the flushed depth texture when creating a sampler... X-Git-Tag: 062012170305~7477 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d171ae086bae37279251a1d6f32e16e333cfc154;p=profile%2Fivi%2Fmesa.git r600g: Actually use the info from the flushed depth texture when creating a sampler view on a depth texture. R600/R700 was using incorrect tiling information from the (compressed) depth buffer. Evergreen worked anyway because tiling doesn't work. --- diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 1afbf89..5a923db 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -380,18 +380,15 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte if (desc == NULL) { R600_ERR("unknow format %d\n", state->format); } - tmp = (struct r600_resource_texture*)texture; - rbuffer = &tmp->resource; - bo[0] = rbuffer->bo; - bo[1] = rbuffer->bo; - /* FIXME depth texture decompression */ + tmp = (struct r600_resource_texture *)texture; if (tmp->depth) { r600_texture_depth_flush(ctx, texture); - tmp = (struct r600_resource_texture*)texture; - rbuffer = &tmp->flushed_depth_texture->resource; - bo[0] = rbuffer->bo; - bo[1] = rbuffer->bo; + tmp = tmp->flushed_depth_texture; } + rbuffer = &tmp->resource; + bo[0] = rbuffer->bo; + bo[1] = rbuffer->bo; + pitch = align(tmp->pitch_in_pixels[0], 8); /* FIXME properly handle first level != 0 */ diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 8c583b4..d23f242 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -428,18 +428,14 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c if (desc == NULL) { R600_ERR("unknow format %d\n", state->format); } - tmp = (struct r600_resource_texture*)texture; - rbuffer = &tmp->resource; - bo[0] = rbuffer->bo; - bo[1] = rbuffer->bo; - /* FIXME depth texture decompression */ + tmp = (struct r600_resource_texture *)texture; if (tmp->depth) { r600_texture_depth_flush(ctx, texture); - tmp = (struct r600_resource_texture*)texture; - rbuffer = &tmp->flushed_depth_texture->resource; - bo[0] = rbuffer->bo; - bo[1] = rbuffer->bo; + tmp = tmp->flushed_depth_texture; } + rbuffer = &tmp->resource; + bo[0] = rbuffer->bo; + bo[1] = rbuffer->bo; pitch = align(tmp->pitch_in_pixels[0], 8); if (tmp->tiled) { array_mode = tmp->array_mode[0];