From: Gurchetan Singh Date: Thu, 7 Feb 2019 00:26:18 +0000 (-0800) Subject: virgl: use virgl_transfer_inline_write even less X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=67426ccd428706b558ae1d8697831ce337f97412;p=mesa.git virgl: use virgl_transfer_inline_write even less We've noticed the Team Fortress 2 engine seems to do many small calls to glSubData(..). Let's pick our heuristic based on the resource base width, not the size of a particular upload. This will cause transfers to be batched together in the transfer queue. Revelant glbench microbenchmark -- Before: buffer_upload_dynamic_element_array_131072 = 131.17 mbytes_sec After: buffer_upload_dynamic_element_array_131072 = 6828.24 mbytes_sec Reviewed-by: Gert Wollny --- diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c index a21e9111769..2a1e0c18b8b 100644 --- a/src/gallium/drivers/virgl/virgl_resource.c +++ b/src/gallium/drivers/virgl/virgl_resource.c @@ -147,7 +147,7 @@ static void virgl_buffer_subdata(struct pipe_context *pipe, u_box_1d(offset, size, &box); - if (size >= (VIRGL_MAX_CMDBUF_DWORDS * 4)) + if (resource->width0 >= getpagesize()) u_default_buffer_subdata(pipe, resource, usage, offset, size, data); else virgl_transfer_inline_write(pipe, resource, 0, usage, &box, data, 0, 0);