summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@gmail.com>2015-03-16 15:13:52 +1000
committerDave Airlie <airlied@redhat.com>2015-06-16 12:34:26 +1000
commit892daab0b683e3f1881c289f71bd360561bbcb76 (patch)
tree6c4952b2003d1a38993bfb970080839933e8c8a5
parent453c0c0e5c26516b8e663718f2399684ec56515f (diff)
vtest: do proper mapping/unmap to take dts into a/c
-rw-r--r--src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c
index ebac50f5718..7b9f565699d 100644
--- a/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c
+++ b/src/gallium/winsys/virgl/vtest/virgl_vtest_winsys.c
@@ -9,6 +9,8 @@
#include "state_tracker/drm_driver.h"
#include "os/os_time.h"
+static void *virgl_vtest_resource_map(struct virgl_winsys *vws, struct virgl_hw_res *res);
+static void virgl_vtest_resource_unmap(struct virgl_winsys *vws, struct virgl_hw_res *res);
static INLINE boolean can_cache_resource(struct virgl_hw_res *res)
{
return res->cacheable == TRUE;
@@ -46,6 +48,7 @@ virgl_vtest_transfer_put(struct virgl_winsys *vws,
{
struct virgl_vtest_winsys *vtws = virgl_vtest_winsys(vws);
uint32_t size;
+ void *ptr;
size = vtest_get_transfer_size(res, box, stride, layer_stride, level);
fprintf(stderr, "transfer put %d\n", size);
@@ -53,7 +56,9 @@ virgl_vtest_transfer_put(struct virgl_winsys *vws,
virgl_vtest_send_transfer_cmd(vtws, VCMD_TRANSFER_PUT, res->res_handle,
level, stride, layer_stride,
box, size);
- virgl_vtest_send_transfer_put_data(vtws, res->ptr + buf_offset, size);
+ ptr = virgl_vtest_resource_map(vws, res);
+ virgl_vtest_send_transfer_put_data(vtws, ptr + buf_offset, size);
+ virgl_vtest_resource_unmap(vws, res);
return 0;
}
@@ -66,6 +71,7 @@ virgl_vtest_transfer_get(struct virgl_winsys *vws,
{
struct virgl_vtest_winsys *vtws = virgl_vtest_winsys(vws);
uint32_t size;
+ void *ptr;
size = vtest_get_transfer_size(res, box, stride, layer_stride, level);
fprintf(stderr, "transfer get %d\n", size);
@@ -74,7 +80,10 @@ virgl_vtest_transfer_get(struct virgl_winsys *vws,
level, stride, layer_stride,
box, size);
- virgl_vtest_recv_transfer_get_data(vtws, res->ptr + buf_offset, size);
+
+ ptr = virgl_vtest_resource_map(vws, res);
+ virgl_vtest_recv_transfer_get_data(vtws, ptr + buf_offset, size);
+ virgl_vtest_resource_unmap(vws, res);
return 0;
}