[Mesa-dev] [PATCH 11/16] svga: use copy_region_vgpu10() for region copies when possible
Brian Paul
brianp at vmware.com
Thu Jun 30 13:24:41 UTC 2016
On 06/29/2016 05:25 PM, Charmaine Lee wrote:
>
>
>> From: Brian Paul <brianp at vmware.com>
>> Sent: Tuesday, June 28, 2016 4:52 PM
>> To: mesa-dev at lists.freedesktop.org
>> Cc: Charmaine Lee; Neha Bhende; Jose Fonseca; Roland Scheidegger
>> Subject: [PATCH 11/16] svga: use copy_region_vgpu10() for region copies when possible
>>
>> ---
>> src/gallium/drivers/svga/svga_pipe_blit.c | 42 ++++++++++++++++++++++++++++---
>> 1 file changed, 38 insertions(+), 4 deletions(-)
>
>> diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c
>> index 564af51..ad54dc5 100644
>> --- a/src/gallium/drivers/svga/svga_pipe_blit.c
>> +++ b/src/gallium/drivers/svga/svga_pipe_blit.c
>> @@ -138,7 +138,6 @@ svga_resource_copy_region(struct pipe_context *pipe,
>> src_z = src_box->z;
>> }
>>
>> - /* different src/dst type???*/
>> if (dst_tex->target == PIPE_TEXTURE_CUBE ||
>> dst_tex->target == PIPE_TEXTURE_1D_ARRAY) {
>> dst_face_layer = dstz;
>> @@ -150,14 +149,49 @@ svga_resource_copy_region(struct pipe_context *pipe,
>> dst_z = dstz;
>> }
>>
>> - svga_texture_copy_handle(svga,
>> - stex->handle,
>> + stex = svga_texture(src_tex);
>> + dtex = svga_texture(dst_tex);
>> +
>> + if (svga_have_vgpu10(svga)) {
>> + /* vgpu10 */
>> + if (util_format_is_compressed(src_tex->format) ==
>> + util_format_is_compressed(dst_tex->format) &&
>> + !util_format_is_depth_and_stencil(src_tex->format) &&
>> + stex->handle != dtex->handle &&
>> + src_tex->target == dst_tex->target) {
>> + copy_region_vgpu10(svga,
>> + src_tex,
>> src_box->x, src_box->y, src_z,
>> src_level, src_face_layer,
>> - dtex->handle,
>> + dst_tex,
>> dstx, dsty, dst_z,
>> dst_level, dst_face_layer,
>> src_box->width, src_box->height, src_box->depth);
>> + }
>> + else {
>> + util_resource_copy_region(pipe, dst_tex, dst_level, dstx, dsty, dstz,
>> + src_tex, src_level, src_box);
>> + }
>> + }
>> + else {
>> + /* vgpu9 */
>> + if (src_tex->format == dst_tex->format) {
>> + svga_texture_copy_handle(svga,
>> + stex->handle,
>> + src_box->x, src_box->y, src_z,
>> + src_level, src_face_layer,
>> + dtex->handle,
>> + dstx, dsty, dst_z,
>> + dst_level, dst_face_layer,
>> + src_box->width, src_box->height,
>> + src_box->depth);
>> + svga_define_texture_level(dtex, dst_face_layer, dst_level);
>
> No need to call svga_define_texture_level() here since it is called at the end of the function.
I'll remove that. Thanks.
-Brian
>
>> + }
>> + else {
>> + util_resource_copy_region(pipe, dst_tex, dst_level, dstx, dsty, dstz,
>> + src_tex, src_level, src_box);
>> + }
>> + }
>>
>> /* Mark the destination image as being defined */
>> svga_define_texture_level(dtex, dst_face_layer, dst_level);
> --
> 1.9.1
>
More information about the mesa-dev
mailing list