HLSL: Add conversions for image ops during SPV construction
HLSL allows image and texture types to be templatized on sub-vec4 types, or even structures. This was mostly handled already during creation of sampling operations. However, for operator[] which can generate image loads, this wasn't happening. It also isn't very easy to do at that point in time, because operator[] does not know where the results it produces will end up. They may be an lvalue or an rvalue, and there's a post-process to convert loads to stores. They may end up in atomic ops. To bypass that difficulty, GlslangToSpv now looks for this case and adds the appropriate conversion. LIMITATION: this only works for cases for which a simple conversion opcode suffices. That is to say, it will not work if the type is templatized on a struct.
This commit is contained in:
8
Test/hlsl.imagefetch-subvec4.comp
Normal file
8
Test/hlsl.imagefetch-subvec4.comp
Normal file
@@ -0,0 +1,8 @@
|
||||
Texture3D<int> IN: register(t0);
|
||||
RWTexture3D<uint> OUT: register(u1);
|
||||
|
||||
[numthreads(8,8,8)]
|
||||
void main(uint3 tid: SV_DispatchThreadID)
|
||||
{
|
||||
OUT[tid] = IN[tid];
|
||||
}
|
||||
Reference in New Issue
Block a user