radeonsi/gfx9: fix si_get_buffer_from_descriptors for 48-bit pointers
authorMarek Olšák <marek.olsak@amd.com>
Fri, 1 Jun 2018 23:29:45 +0000 (19:29 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 14 Jun 2018 02:00:12 +0000 (22:00 -0400)
This fixes:
GL45-CTS.pipeline_statistics_query_tests_ARB.functional_compute_shader_invocations

Cc: 18.0 18.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/gallium/drivers/radeonsi/si_descriptors.c

index 1d14c9df1e197b756c924e05a8e664a2e5f5741d..57a312463c996f31e10e556bc0aa30eb0ad2a444 100644 (file)
@@ -94,7 +94,7 @@ static uint32_t null_image_descriptor[8] = {
         * descriptor */
 };
 
-static uint64_t si_desc_extract_buffer_address(uint32_t *desc)
+static uint64_t si_desc_extract_buffer_address(const uint32_t *desc)
 {
        uint64_t va = desc[0] |
                      ((uint64_t)G_008F04_BASE_ADDRESS_HI(desc[1]) << 32);
@@ -1054,7 +1054,7 @@ static void si_get_buffer_from_descriptors(struct si_buffer_resources *buffers,
                *size = desc[2];
 
                assert(G_008F04_STRIDE(desc[1]) == 0);
-               va = ((uint64_t)desc[1] << 32) | desc[0];
+               va = si_desc_extract_buffer_address(desc);
 
                assert(va >= res->gpu_address && va + *size <= res->gpu_address + res->bo_size);
                *offset = va - res->gpu_address;