The regression has first shown up after this state tracker change:
b0427bedde
.
FDO bug #28082.
undefined
@@ -960,7 +960,7 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen, | |||
util_format_short_name(base->format)); | |||
tex->buffer = rws->buffer_create(rws, 2048, | |||
PIPE_BIND_SAMPLER_VIEW, /* XXX */ | |||
base->bind, | |||
tex->size); | |||
rws->buffer_set_tiling(rws, tex->buffer, | |||
tex->pitch[0], |
@@ -127,6 +127,12 @@ r300_texture_get_transfer(struct pipe_context *ctx, | |||
struct r300_transfer *trans; | |||
struct pipe_resource base; | |||
/* XXX Why aren't flushes taken care of by winsys automatically? | |||
* Winsys seems to sometimes return a cached buffer instead of | |||
* a mapped hardware buffer if this flush is commented out. */ | |||
if (ctx->is_resource_referenced(ctx, texture, sr.face, sr.level)) | |||
ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL); | |||
trans = CALLOC_STRUCT(r300_transfer); | |||
if (trans) { | |||
/* Initialize the transfer object. */ |
@@ -86,7 +86,7 @@ static void *radeon_r300_winsys_buffer_map(struct r300_winsys_screen *ws, | |||
unsigned usage) | |||
{ | |||
struct pb_buffer *_buf = radeon_pb_buffer(buf); | |||
return pb_map(_buf, usage); | |||
} | |||