diff options
author | Marek Olšák <[email protected]> | 2019-07-03 18:51:24 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2019-07-15 14:58:23 -0400 |
commit | fc4302d1dfe4fe724df250d0de1fcf0f60953c99 (patch) | |
tree | b8fe616f5eafb71a2fb087eca81061b5d76026df /src/gallium/drivers/virgl | |
parent | 5e76c9992317f20f89fafe3aab03026ca550766e (diff) |
gallium: use MAP_DIRECTLY to mean supression of DISCARD in buffer_subdata
This is needed to fix an issue with OpenGL when a buffer is mapped and
BufferSubData is called. In this case, we can't invalidate the buffer range.
Diffstat (limited to 'src/gallium/drivers/virgl')
-rw-r--r-- | src/gallium/drivers/virgl/virgl_resource.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c index c8e0d23fe12..c22a78a4731 100644 --- a/src/gallium/drivers/virgl/virgl_resource.c +++ b/src/gallium/drivers/virgl/virgl_resource.c @@ -588,10 +588,12 @@ static void virgl_buffer_subdata(struct pipe_context *pipe, /* the write flag is implicit by the nature of buffer_subdata */ usage |= PIPE_TRANSFER_WRITE; - if (offset == 0 && size == resource->width0) - usage |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE; - else - usage |= PIPE_TRANSFER_DISCARD_RANGE; + if (!(usage & PIPE_TRANSFER_MAP_DIRECTLY)) { + if (offset == 0 && size == resource->width0) + usage |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE; + else + usage |= PIPE_TRANSFER_DISCARD_RANGE; + } u_box_1d(offset, size, &box); |