summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGurchetan Singh <[email protected]>2019-02-06 16:26:18 -0800
committerGert Wollny <[email protected]>2019-02-15 11:19:05 +0100
commit67426ccd428706b558ae1d8697831ce337f97412 (patch)
tree93cb719759ca459a7dbc17cbf153ef9a924c5610 /src
parentf0e71b1088848e4190d6f8a5415571d0ddf130aa (diff)
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 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/virgl/virgl_resource.c2
1 files changed, 1 insertions, 1 deletions
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);