gallium/radeon: set texture metadata only once
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
69d8b75114
commit
f914779c75
|
@ -455,6 +455,7 @@ r600_alloc_buffer_struct(struct pipe_screen *screen,
|
||||||
rbuffer->b.vtbl = &r600_buffer_vtbl;
|
rbuffer->b.vtbl = &r600_buffer_vtbl;
|
||||||
rbuffer->buf = NULL;
|
rbuffer->buf = NULL;
|
||||||
rbuffer->TC_L2_dirty = false;
|
rbuffer->TC_L2_dirty = false;
|
||||||
|
rbuffer->is_shared = false;
|
||||||
util_range_init(&rbuffer->valid_buffer_range);
|
util_range_init(&rbuffer->valid_buffer_range);
|
||||||
return rbuffer;
|
return rbuffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,9 @@ struct r600_resource {
|
||||||
* use TC L2.
|
* use TC L2.
|
||||||
*/
|
*/
|
||||||
bool TC_L2_dirty;
|
bool TC_L2_dirty;
|
||||||
|
|
||||||
|
/* Whether the resource has been exported via resource_get_handle. */
|
||||||
|
bool is_shared;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct r600_transfer {
|
struct r600_transfer {
|
||||||
|
|
|
@ -259,8 +259,11 @@ static boolean r600_texture_get_handle(struct pipe_screen* screen,
|
||||||
struct r600_texture *rtex = (struct r600_texture*)resource;
|
struct r600_texture *rtex = (struct r600_texture*)resource;
|
||||||
struct radeon_bo_metadata metadata;
|
struct radeon_bo_metadata metadata;
|
||||||
|
|
||||||
r600_texture_init_metadata(rtex, &metadata);
|
if (!res->is_shared) {
|
||||||
rscreen->ws->buffer_set_metadata(res->buf, &metadata);
|
res->is_shared = true;
|
||||||
|
r600_texture_init_metadata(rtex, &metadata);
|
||||||
|
rscreen->ws->buffer_set_metadata(res->buf, &metadata);
|
||||||
|
}
|
||||||
|
|
||||||
return rscreen->ws->buffer_get_handle(res->buf,
|
return rscreen->ws->buffer_get_handle(res->buf,
|
||||||
rtex->surface.level[0].pitch_bytes,
|
rtex->surface.level[0].pitch_bytes,
|
||||||
|
|
Loading…
Reference in New Issue