Module: Mesa Branch: master Commit: 88ca4a43a2dffe132c9a2fa29d490d6644ecd7f8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=88ca4a43a2dffe132c9a2fa29d490d6644ecd7f8
Author: Ilia Mirkin <imir...@alum.mit.edu> Date: Fri Apr 22 00:01:56 2016 -0400 nvc0: fix retrieving query results into buffer for timestamps The timestamps are stored in a funny place, and even though they are a 64-bit result, are not stored with is64bit. Account for that when retrieving the query result into a resource. Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> Cc: "11.2" <mesa-sta...@lists.freedesktop.org> --- src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c index 6238588..4c34593 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c @@ -370,7 +370,7 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0, struct nouveau_pushbuf *push = nvc0->base.pushbuf; struct nvc0_hw_query *hq = nvc0_hw_query(q); struct nv04_resource *buf = nv04_resource(resource); - unsigned stride; + unsigned qoffset = 0, stride; assert(!hq->funcs || !hq->funcs->get_query_result); @@ -426,17 +426,27 @@ nvc0_hw_get_query_result_resource(struct nvc0_context *nvc0, case PIPE_QUERY_PIPELINE_STATISTICS: stride = 12; break; + case PIPE_QUERY_TIME_ELAPSED: + case PIPE_QUERY_TIMESTAMP: + qoffset = 8; + /* fallthrough */ default: assert(index == 0); stride = 1; break; } - if (hq->is64bit) { - nouveau_pushbuf_data(push, hq->bo, hq->offset + 16 * index, - 8 | NVC0_IB_ENTRY_1_NO_PREFETCH); - nouveau_pushbuf_data(push, hq->bo, hq->offset + 16 * (index + stride), + if (hq->is64bit || qoffset) { + nouveau_pushbuf_data(push, hq->bo, hq->offset + qoffset + 16 * index, 8 | NVC0_IB_ENTRY_1_NO_PREFETCH); + if (q->type == PIPE_QUERY_TIMESTAMP) { + PUSH_DATA(push, 0); + PUSH_DATA(push, 0); + } else { + nouveau_pushbuf_data(push, hq->bo, hq->offset + qoffset + + 16 * (index + stride), + 8 | NVC0_IB_ENTRY_1_NO_PREFETCH); + } } else { nouveau_pushbuf_data(push, hq->bo, hq->offset + 4, 4 | NVC0_IB_ENTRY_1_NO_PREFETCH); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit