summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2018-02-21 00:10:24 -0500
committerIlia Mirkin <[email protected]>2018-02-22 20:47:48 -0500
commit33ce3569c5b87523e2ed94c383d2ee245f1beaaf (patch)
tree94a9a60b28f5c0c8a0c95f6708ece2290c4d40ba /src
parentf6e4f956689719c77e8d22951f4b1f6ed5548da4 (diff)
nvc0: fix writing query results into buffer
We need to mark the range as valid, and validate the resource using a helper to ensure that the buffer status is marked properly. Fixes some CTS pipeline stats query tests, and KHR-GL45.direct_state_access.queries_functional Signed-off-by: Ilia Mirkin <[email protected]> Tested-by: Karol Herbst <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
index 7568eeb94db..83a57fa0118 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
@@ -386,6 +386,12 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0,
nvc0->base.push_cb(&nvc0->base, buf, offset,
result_type >= PIPE_QUERY_TYPE_I64 ? 2 : 1,
ready);
+
+ util_range_add(&buf->valid_buffer_range, offset,
+ offset + (result_type >= PIPE_QUERY_TYPE_I64 ? 8 : 4));
+
+ nvc0_resource_validate(buf, NOUVEAU_BO_WR);
+
return;
}
@@ -473,10 +479,10 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0,
PUSH_DATAh(push, buf->address + offset);
PUSH_DATA (push, buf->address + offset);
- if (buf->mm) {
- nouveau_fence_ref(nvc0->screen->base.fence.current, &buf->fence);
- nouveau_fence_ref(nvc0->screen->base.fence.current, &buf->fence_wr);
- }
+ util_range_add(&buf->valid_buffer_range, offset,
+ offset + (result_type >= PIPE_QUERY_TYPE_I64 ? 8 : 4));
+
+ nvc0_resource_validate(buf, NOUVEAU_BO_WR);
}
static const struct nvc0_query_funcs hw_query_funcs = {