Mesa (main): turnip: Fix operator precedence in address calculation macros for queries
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 10 21:07:55 UTC 2021
Module: Mesa
Branch: main
Commit: c82d7e36174198b5dea3811fb11672d33aed4acb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c82d7e36174198b5dea3811fb11672d33aed4acb
Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date: Fri Dec 10 17:15:39 2021 +0200
turnip: Fix operator precedence in address calculation macros for queries
Fixes crash in Oblivion, Skyrim, Crysis running through DXVK on 32b
systems.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5723
Fixes: 937dd76426b2b372a18be35e1416eed291524af7 "turnip: Implement VK_KHR_performance_query"
Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14148>
---
src/freedreno/vulkan/tu_query.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/freedreno/vulkan/tu_query.c b/src/freedreno/vulkan/tu_query.c
index 48da4f1ae25..27f5860c79e 100644
--- a/src/freedreno/vulkan/tu_query.c
+++ b/src/freedreno/vulkan/tu_query.c
@@ -117,7 +117,7 @@ struct PACKED perf_query_slot {
query_iova(struct occlusion_query_slot, pool, query, field)
#define pipeline_stat_query_iova(pool, query, field) \
- pool->bo.iova + pool->stride * query + \
+ pool->bo.iova + pool->stride * (query) + \
offsetof(struct pipeline_stat_query_slot, field)
#define primitive_query_iova(pool, query, field, i) \
@@ -125,9 +125,9 @@ struct PACKED perf_query_slot {
offsetof(struct primitive_slot_value, values[i])
#define perf_query_iova(pool, query, field, i) \
- pool->bo.iova + pool->stride * query + \
+ pool->bo.iova + pool->stride * (query) + \
sizeof(struct query_slot) + \
- sizeof(struct perfcntr_query_slot) * i + \
+ sizeof(struct perfcntr_query_slot) * (i) + \
offsetof(struct perfcntr_query_slot, field)
#define query_available_iova(pool, query) \
@@ -135,11 +135,11 @@ struct PACKED perf_query_slot {
#define query_result_iova(pool, query, type, i) \
pool->bo.iova + pool->stride * (query) + \
- sizeof(struct query_slot) + sizeof(type) * i
+ sizeof(struct query_slot) + sizeof(type) * (i)
#define query_result_addr(pool, query, type, i) \
- pool->bo.map + pool->stride * query + \
- sizeof(struct query_slot) + sizeof(type) * i
+ pool->bo.map + pool->stride * (query) + \
+ sizeof(struct query_slot) + sizeof(type) * (i)
#define query_is_available(slot) slot->available
More information about the mesa-commit
mailing list