turnip: Assert about the storage buffer offset alignment.
authorEric Anholt <eric@anholt.net>
Tue, 17 Nov 2020 21:19:36 +0000 (13:19 -0800)
committerMarge Bot <eric+marge@anholt.net>
Wed, 18 Nov 2020 00:38:02 +0000 (00:38 +0000)
Giving us an unaligned pointer is invalid, and this helps switch a CTS bug
from being a flake to a consistent crash.

https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2661

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7662>

.gitlab-ci/deqp-freedreno-a630-fails.txt
.gitlab-ci/deqp-freedreno-a630-flakes.txt
src/freedreno/vulkan/tu_descriptor_set.c

index 2a555e2..0a7b3e4 100644 (file)
@@ -95,6 +95,8 @@ dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.depth_compare_greater,Fa
 dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.depth_compare_always_greater,Fail
 dEQP-VK.pipeline.framebuffer_attachment.2d_array_19x27_32x32_4_ms,Fail
 dEQP-VK.pipeline.render_to_image.core.2d.huge.height.r8g8b8a8_unorm_d16_unorm,Crash
+dEQP-VK.pipeline.push_descriptor.compute.binding1_numcalls2_storage_image,Crash
+dEQP-VK.pipeline.push_descriptor.compute.binding3_numcalls2_uniform_buffer,Crash
 dEQP-VK.spirv_assembly.instruction.graphics.opquantize.positive_round_up_or_round_down_vert,Fail
 dEQP-VK.spirv_assembly.instruction.graphics.opquantize.round_to_negative_inf_vert,Fail
 dEQP-VK.spirv_assembly.instruction.graphics.opquantize.spec_const_carry_bit_vert,Fail
index 93d3e93..58c77cb 100644 (file)
@@ -41,9 +41,6 @@ dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrit
 # https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2017
 dEQP-VK.renderpass.*separate_channels.*
 
-# These tests are broken (does not respect our minStorageBufferOffsetAlignment of 64)
-dEQP-VK.pipeline.push_descriptor.compute.*
-
 # Undiagnosed flakes appearing more than once in the last 2 months as
 # of 2020-08-19, in descending order of frequency.
 dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8
index 151ef92..765e3c7 100644 (file)
@@ -736,6 +736,7 @@ write_buffer_descriptor(uint32_t *dst, const VkDescriptorBufferInfo *buffer_info
 {
    TU_FROM_HANDLE(tu_buffer, buffer, buffer_info->buffer);
 
+   assert((buffer_info->offset & 63) == 0); /* minStorageBufferOffsetAlignment */
    uint64_t va = tu_buffer_iova(buffer) + buffer_info->offset;
    uint32_t range = get_range(buffer, buffer_info->offset, buffer_info->range);
    range = ALIGN_POT(range, 4) / 4;