halide / Halide

a language for fast, portable data-parallel computation
https://halide-lang.org
Other
5.78k stars 1.07k forks source link

[vulkan] bilateral_grid generates invalid float assignment from float2 value #8291

Open derek-gerstmann opened 2 weeks ago

derek-gerstmann commented 2 weeks ago
> VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ./bilateral_grid/bilateral_grid_process ./bilateral_grid/gray.png ./bilateral_grid/out.png 0.1 10
UNASSIGNED-CoreValidation-Shader-InconsistentSpirv(ERROR / SPEC): msgNum: 7060244 - Validation Error: [ UNASSIGNED-CoreValidation-Shader-InconsistentSpirv ] Object 0: handle = 0x134023018, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6bbb14 | SPIR-V module not valid: Structure id 716 decorated as BufferBlock for variable in Uniform storage class must follow relaxed storage buffer layout rules: member 0 contains an array with stride 4 not satisfying alignment to 8
  %k2_buffer_block2 = OpTypeStruct %_runtimearr_v2float

    Objects: 1
        [0] 0x134023018, type: 3, name: NULL
VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719(ERROR / SPEC): msgNum: 1610793953 - Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719 ] Object 0: handle = 0x134023018, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6002c3e1 | After specialization was applied, VkShaderModule 0xfab64d0000000002[] does not contain valid spirv for stage VK_SHADER_STAGE_COMPUTE_BIT. The Vulkan spec states: The shader code used by the pipeline must be valid as described by the Khronos SPIR-V Specification after applying the specializations provided in pSpecializationInfo, if any, and then converting all specialization constants into fixed constants (https://vulkan.lunarg.com/doc/view/1.3.231.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719)
    Objects: 1
        [0] 0x134023018, type: 3, name: NULL
VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719(ERROR / SPEC): msgNum: 1610793953 - Validation Error: [ VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719 ] Object 0: handle = 0x134023018, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6002c3e1 | After specialization was applied, VkShaderModule 0xfab64d0000000002[] does not contain valid spirv for stage VK_SHADER_STAGE_COMPUTE_BIT. The Vulkan spec states: The shader code used by the pipeline must be valid as described by the Khronos SPIR-V Specification after applying the specializations provided in pSpecializationInfo, if any, and then converting all specialization constants into fixed constants (https://vulkan.lunarg.com/doc/view/1.3.231.1/mac/1.3-extensions/vkspec.html#VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719)
    Objects: 1
        [0] 0x134023018, type: 3, name: NULL
[mvk-error] VK_ERROR_INITIALIZATION_FAILED: Shader library compile failed (Error code 3):
program_source:145:121: error: assigning to 'float' from incompatible type 'float2' (vector of 2 'float' values)
    k2_blurx._m0[(((((_819 * 32) + _739) * 2) - _823) / 2) + _823] = float2(k2_blurz._m0[_752.x], k2_blurz._m0[_752.y]) + ((float2(k2_blurz._m0[_763.x], k2_blurz._m0[_763.y]) * float2(4.0)) + ((float2(k2_blurz._m0[_776.x], k2_blurz._m0[_776.y]) * float2(6.0)) + (float2(k2_blurz._m0[_788.x], k2_blurz._m0[_788.y]) + (float2(k2_blurz._m0[_799.x], k2_blurz._m0[_799.y]) * float2(4.0)))));
                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
program_source:159:121: error: assigning to 'float' from incompatible type 'float2' (vector of 2 'float' values)
    k2_blurx._m0[(((((_908 * 32) + _739) * 2) - _912) / 2) + _912] = float2(k2_blurz._m0[_843.x], k2_blurz._m0[_843.y]) + ((float2(k2_blurz._m0[_853.x], k2_blurz._m0[_853.y]) * float2(4.0)) + ((float2(k2_blurz._m0[_865.x], k2_blurz._m0[_865.y]) * float2(6.0)) + (float2(k2_blurz._m0[_877.x], k2_blurz._m0[_877.y]) + (float2(k2_blurz._m0[_887.x], k2_blurz._m0[_887.y]) * float2(4.0)))));
                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.