mpv-prescalers
mpv-prescalers copied to clipboard
compute/ravu-r3-x3 fails with libplacebo-3.120.3 and shaderc-2022.1
Throws error:
[vo/gpu/vulkan/libplacebo] shaderc output:
[vo/gpu/vulkan/libplacebo] input:9: warning: '#extension' : extension not supported: GL_ARB_texture_buffer_object
[vo/gpu/vulkan/libplacebo] shaderc: internal error: compilation succeeded but failed to optimize: In SPIR-V 1.6 or later, sampled image dimension must not be Buffer
[vo/gpu/vulkan/libplacebo] %57 = OpTypeSampledImage %56
[vo/gpu/vulkan/libplacebo]
[vo/gpu/vulkan/libplacebo]
[vo/gpu/vulkan/libplacebo]
[vo/gpu/vulkan/libplacebo] shaderc compile status 'error' (0 errors, 1 warnings)
[vo/gpu/vulkan/libplacebo] [ 1] #version 450
[vo/gpu/vulkan/libplacebo] [ 2] #extension GL_ARB_compute_shader : enable
[vo/gpu/vulkan/libplacebo] [ 3] #extension GL_KHR_shader_subgroup_basic : enable
[vo/gpu/vulkan/libplacebo] [ 4] #extension GL_KHR_shader_subgroup_vote : enable
[vo/gpu/vulkan/libplacebo] [ 5] #extension GL_KHR_shader_subgroup_arithmetic : enable
[vo/gpu/vulkan/libplacebo] [ 6] #extension GL_KHR_shader_subgroup_ballot : enable
[vo/gpu/vulkan/libplacebo] [ 7] #extension GL_KHR_shader_subgroup_shuffle : enable
[vo/gpu/vulkan/libplacebo] [ 8] #extension GL_ARB_shader_image_load_store : enable
[vo/gpu/vulkan/libplacebo] [ 9] #extension GL_ARB_texture_buffer_object : enable
[vo/gpu/vulkan/libplacebo] [ 10] layout(binding=0) uniform samplerBuffer _data_0_0;
[vo/gpu/vulkan/libplacebo] [ 11] layout(binding=1, rgba16f) writeonly restrict uniform image2D _image_1_0;
[vo/gpu/vulkan/libplacebo] [ 12] layout (local_size_x = 256, local_size_y = 1) in;
[vo/gpu/vulkan/libplacebo] [ 13]
[vo/gpu/vulkan/libplacebo] [ 14] void _main_2_0() {
[vo/gpu/vulkan/libplacebo] [ 15] if (gl_GlobalInvocationID.x >= 26)
[vo/gpu/vulkan/libplacebo] [ 16] return;
[vo/gpu/vulkan/libplacebo] [ 17] vec4 color = vec4(0.0);
[vo/gpu/vulkan/libplacebo] [ 18] ivec3 pos = ivec3(gl_GlobalInvocationID) + ivec3(0, 0, 0);
[vo/gpu/vulkan/libplacebo] [ 19] int base = ((pos.z * 216 + pos.y) * 26 + pos.x) * 4;
[vo/gpu/vulkan/libplacebo] [ 20] color[0] = texelFetch(_data_0_0, base + 0).r;
[vo/gpu/vulkan/libplacebo] [ 21] color[1] = texelFetch(_data_0_0, base + 1).r;
[vo/gpu/vulkan/libplacebo] [ 22] color[2] = texelFetch(_data_0_0, base + 2).r;
[vo/gpu/vulkan/libplacebo] [ 23] color[3] = texelFetch(_data_0_0, base + 3).r;
[vo/gpu/vulkan/libplacebo] [ 24] imageStore(_image_1_0, ivec2(pos), color);
[vo/gpu/vulkan/libplacebo] [ 25]
[vo/gpu/vulkan/libplacebo] [ 26] }
[vo/gpu/vulkan/libplacebo] [ 27]
[vo/gpu/vulkan/libplacebo] [ 28] void main() {
[vo/gpu/vulkan/libplacebo] [ 29] _main_2_0();
[vo/gpu/vulkan/libplacebo] [ 30] }
[vo/gpu/vulkan/libplacebo] vk_compile_glsl(gpu, tmp, GLSL_SHADER_COMPUTE, params->glsl_shader, &comp): VK_ERROR_INITIALIZATION_FAILED (../libplacebo-v3.120.3/src/vulkan/gpu.c:2739)
[vo/gpu/vulkan/libplacebo] Failed creating render pass for dispatch
Does it work with glslang instead of shaderc?
Yes, it works with glslang.
The GLSL compilation succeeded, but the SPIRV optimization failed. Either the generated SPIRV is not compliant with SPIRV 1.6 standard, or it's a spirv-tools bug.
In SPIR-V 1.6 or later, sampled image dimension must not be Buffer