I have this repo https://github.com/danilw/GPU-my-list-of-bugs
In this my "List of shader bugs" some shaders with UB and other "edge-cases".
I tested shaders from this my lit with this project spvm.
Using spvm_shadertoy of this project to test.
To test with llvmpipe I use https://github.com/danilw/vulkan-shadertoy-launcher GPU detected as
Vulkan GPU - CPU: llvmpipe (LLVM 14.0.4, 256 bits) (id: 0x0000) from vendor 0x10005 [driver version: 0x0001, API version: 0x4030D3]
(I list only "broken" results, correct not listed)
(multi-channel shaders not tested, just few where I copy Buf code as Image shader code)
More:
https://github.com/danilw/card-game-GLSL
Using original_bufA.glsl as Image shader (rename iChannel3 to iChannel0 for spvm_shadertoy). Expected result - background should be rendered. llvmpipe(CPU) result - render single frame after 1 min of "loading shader". spvm result - crash segfault.
Using unrolled_bufA.glsl as Image shader (same rename). llvmpipe result - render single frame after 1 min of "loading shader". spvm result - crash segfault.
My public shaders:
Surprisingly, this shader https://www.shadertoy.com/view/Nt2Szm works in spvm when it complex enough.
And this same shader GLES2 port https://www.shadertoy.com/view/fdc3Dn works in spvm. (1 frame per min)
When this same shader unrolled version https://www.shadertoy.com/view/sdcGDr - does not work in spvm. spvm result - crash segfault. llvmpipe(CPU) result - works as expected.
I made this "test" just for fun, idk if it can be considered "useful".
Result is - most of my shaders dont work with spvm.
llvmpipe is still best option to launch your shaders on CPU.
I have this repo https://github.com/danilw/GPU-my-list-of-bugs
In this my "List of shader bugs" some shaders with UB and other "edge-cases".
I tested shaders from this my lit with this project spvm.
Using
spvm_shadertoyof this project to test.To test with llvmpipe I use https://github.com/danilw/vulkan-shadertoy-launcher GPU detected as
Vulkan GPU - CPU: llvmpipe (LLVM 14.0.4, 256 bits) (id: 0x0000) from vendor 0x10005 [driver version: 0x0001, API version: 0x4030D3](I list only "broken" results, correct not listed)
(multi-channel shaders not tested, just few where I copy Buf code as Image shader code)
texturefunction from codetexturefunction from codetexturefunction from code (use BufA as Image shader)More:
https://github.com/danilw/card-game-GLSL
Using
original_bufA.glslas Image shader (rename iChannel3 to iChannel0 forspvm_shadertoy). Expected result - background should be rendered. llvmpipe(CPU) result - render single frame after 1 min of "loading shader". spvm result - crash segfault.Using
unrolled_bufA.glslas Image shader (same rename). llvmpipe result - render single frame after 1 min of "loading shader". spvm result - crash segfault.My public shaders:
#define iTime 2.0and#define iMouse vec4(0.)Surprisingly, this shader https://www.shadertoy.com/view/Nt2Szm works in spvm when it complex enough.
And this same shader GLES2 port https://www.shadertoy.com/view/fdc3Dn works in spvm. (1 frame per min)
When this same shader unrolled version https://www.shadertoy.com/view/sdcGDr - does not work in spvm. spvm result - crash segfault. llvmpipe(CPU) result - works as expected.
I made this "test" just for fun, idk if it can be considered "useful".
Result is - most of my shaders dont work with spvm.
llvmpipe is still best option to launch your shaders on CPU.