diff --git a/src/kosmickrisp/libkk/kk_query.cl b/src/kosmickrisp/libkk/kk_query.cl index e1f15a06ef0..c57f76e6516 100644 --- a/src/kosmickrisp/libkk/kk_query.cl +++ b/src/kosmickrisp/libkk/kk_query.cl @@ -27,7 +27,7 @@ query_report(global uint64_t *results, global uint16_t *oq_index, * setting all element values to 0 and emitting them as available. */ KERNEL(1) -libkk_reset_query(global uint64_t *availability, global uint64_t *results, +libkk_reset_query(global uint32_t *availability, global uint64_t *results, global uint16_t *oq_index, uint32_t first_query, uint16_t reports_per_query, int set_available) { @@ -50,14 +50,14 @@ libkk_reset_query(global uint64_t *availability, global uint64_t *results, } KERNEL(1) -libkk_write_u64_array(global struct libkk_imm_write *write_array) +libkk_write_u32_array(global struct libkk_imm_write *write_array) { uint id = cl_global_id.x; *(write_array[id].address) = write_array[id].value; } KERNEL(1) -libkk_copy_queries(global uint64_t *availability, global uint64_t *results, +libkk_copy_queries(global uint32_t *availability, global uint64_t *results, global uint16_t *oq_index, uint64_t dst_addr, uint64_t dst_stride, uint32_t first_query, VkQueryResultFlagBits flags, uint16_t reports_per_query) diff --git a/src/kosmickrisp/libkk/kk_query.h b/src/kosmickrisp/libkk/kk_query.h index 8b37d36bb74..56887401c5b 100644 --- a/src/kosmickrisp/libkk/kk_query.h +++ b/src/kosmickrisp/libkk/kk_query.h @@ -12,8 +12,8 @@ #include "compiler/libcl/libcl.h" struct libkk_imm_write { - DEVICE(uint64_t) address; - uint64_t value; + DEVICE(uint32_t) address; + uint32_t value; }; #define LIBKK_QUERY_UNAVAILABLE (uint64_t)((int64_t)-1) diff --git a/src/kosmickrisp/vulkan/kk_encoder.c b/src/kosmickrisp/vulkan/kk_encoder.c index 6133ed44e71..08de52281f7 100644 --- a/src/kosmickrisp/vulkan/kk_encoder.c +++ b/src/kosmickrisp/vulkan/kk_encoder.c @@ -146,7 +146,7 @@ upload_queue_writes(struct kk_cmd_buffer *cmd) if (!addr) return; struct mtl_size grid = {count, 1, 1}; - libkk_write_u64_array(cmd, grid, false, addr); + libkk_write_u32_array(cmd, grid, false, addr); enc->imm_writes.size = 0u; } diff --git a/src/kosmickrisp/vulkan/kk_event.c b/src/kosmickrisp/vulkan/kk_event.c index 16d7cc4e099..bbe52ec42a6 100644 --- a/src/kosmickrisp/vulkan/kk_event.c +++ b/src/kosmickrisp/vulkan/kk_event.c @@ -13,7 +13,9 @@ #include "kk_encoder.h" #include "kk_entrypoints.h" -#define KK_EVENT_MEM_SIZE sizeof(uint64_t) +#define KK_EVENT_MEM_SIZE sizeof(VkResult) + +static_assert(sizeof(uint32_t) == KK_EVENT_MEM_SIZE, "Events are 32 bits"); VKAPI_ATTR VkResult VKAPI_CALL kk_CreateEvent(VkDevice device, const VkEventCreateInfo *pCreateInfo, diff --git a/src/kosmickrisp/vulkan/kk_event.h b/src/kosmickrisp/vulkan/kk_event.h index 4d6b7a14dcc..ec845753d3d 100644 --- a/src/kosmickrisp/vulkan/kk_event.h +++ b/src/kosmickrisp/vulkan/kk_event.h @@ -19,7 +19,7 @@ struct kk_event { struct kk_bo *bo; uint64_t addr; - uint64_t *status; + VkResult *status; }; VK_DEFINE_NONDISP_HANDLE_CASTS(kk_event, base, VkEvent, VK_OBJECT_TYPE_EVENT) diff --git a/src/kosmickrisp/vulkan/kk_query_pool.c b/src/kosmickrisp/vulkan/kk_query_pool.c index c9594f6fb1b..76d1c2f7316 100644 --- a/src/kosmickrisp/vulkan/kk_query_pool.c +++ b/src/kosmickrisp/vulkan/kk_query_pool.c @@ -72,7 +72,7 @@ kk_CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo *pCreateInfo, /* We place the availability first and then data */ pool->query_start = 0; if (kk_has_available(pool)) { - pool->query_start = align(pool->vk.query_count * sizeof(uint64_t), + pool->query_start = align(pool->vk.query_count * sizeof(uint32_t), sizeof(struct kk_query_report)); } @@ -142,12 +142,12 @@ kk_DestroyQueryPool(VkDevice device, VkQueryPool queryPool, vk_query_pool_destroy(&dev->vk, pAllocator, &pool->vk); } -static uint64_t * +static uint32_t * kk_query_available_map(struct kk_query_pool *pool, uint32_t query) { assert(kk_has_available(pool)); assert(query < pool->vk.query_count); - return (uint64_t *)pool->bo->cpu + query; + return (uint32_t *)pool->bo->cpu + query; } static uint64_t @@ -175,7 +175,7 @@ kk_query_available_addr(struct kk_query_pool *pool, uint32_t query) { assert(kk_has_available(pool)); assert(query < pool->vk.query_count); - return pool->bo->gpu + query * sizeof(uint64_t); + return pool->bo->gpu + query * sizeof(uint32_t); } static struct kk_query_report * @@ -204,7 +204,7 @@ kk_ResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint64_t value = 0; if (kk_has_available(pool)) { - uint64_t *available = kk_query_available_map(pool, firstQuery + i); + uint32_t *available = kk_query_available_map(pool, firstQuery + i); *available = 0u; } else { value = UINT64_MAX; @@ -293,7 +293,7 @@ kk_query_is_available(struct kk_device *dev, struct kk_query_pool *pool, uint32_t query) { if (kk_has_available(pool)) { - uint64_t *available = kk_query_available_map(pool, query); + uint32_t *available = kk_query_available_map(pool, query); return p_atomic_read(available) != 0; } else { const struct kk_query_report *report =