Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>tags/12.0-branchpoint
@@ -455,6 +455,7 @@ r600_alloc_buffer_struct(struct pipe_screen *screen, | |||
rbuffer->b.vtbl = &r600_buffer_vtbl; | |||
rbuffer->buf = NULL; | |||
rbuffer->TC_L2_dirty = false; | |||
rbuffer->is_shared = false; | |||
util_range_init(&rbuffer->valid_buffer_range); | |||
return rbuffer; | |||
} |
@@ -166,6 +166,9 @@ struct r600_resource { | |||
* use TC L2. | |||
*/ | |||
bool TC_L2_dirty; | |||
/* Whether the resource has been exported via resource_get_handle. */ | |||
bool is_shared; | |||
}; | |||
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 radeon_bo_metadata metadata; | |||
r600_texture_init_metadata(rtex, &metadata); | |||
rscreen->ws->buffer_set_metadata(res->buf, &metadata); | |||
if (!res->is_shared) { | |||
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, | |||
rtex->surface.level[0].pitch_bytes, |