iris: correctly set alignment to next power of two for struct size
authorRohan Garg <rohan.garg@intel.com>
Fri, 2 Dec 2022 15:39:33 +0000 (21:09 +0530)
committerMarge Bot <emma+marge@anholt.net>
Thu, 25 May 2023 21:24:44 +0000 (21:24 +0000)
We're currently aligning the offset to the size of the data structure
itself when the upload manager actually expects a POT. Ideally this
would be the next POT that's greater than the size of the structure.

Fixes: c24a574e6c78 ("iris: Don't allocate a BO per query object")

Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20153>

src/gallium/drivers/iris/iris_query.c

index a5c4c94..2d2c5bc 100644 (file)
@@ -521,7 +521,8 @@ iris_begin_query(struct pipe_context *ctx, struct pipe_query *query)
       size = sizeof(struct iris_query_snapshots);
 
    u_upload_alloc(ice->query_buffer_uploader, 0,
-                  size, size, &q->query_state_ref.offset,
+                  size, util_next_power_of_two(size),
+                  &q->query_state_ref.offset,
                   &q->query_state_ref.res, &ptr);
 
    if (!iris_resource_bo(q->query_state_ref.res))