HLSL: phase 3a: Add sub-vec4 rwtexture formats (qualifier.layoutFormat)
This PR sets the TQualifier layoutFormat according to the HLSL image type. For instance: RWTexture1D <float2> g_tTex1df2; becomes ElfRg32f. Similar on Buffers, e.g, Buffer<float4> mybuffer; The return type for image and buffer loads is now taken from the storage format. Also, the qualifier for the return type is now (properly) a temp, not a global.
This commit is contained in:
@@ -823,6 +823,53 @@ public:
|
||||
default: return "none";
|
||||
}
|
||||
}
|
||||
static int getLayoutComponentCount(TLayoutFormat f)
|
||||
{
|
||||
switch (f) {
|
||||
case ElfRgba32f: return 4;
|
||||
case ElfRgba16f: return 4;
|
||||
case ElfRg32f: return 2;
|
||||
case ElfRg16f: return 2;
|
||||
case ElfR11fG11fB10f: return 3;
|
||||
case ElfR32f: return 1;
|
||||
case ElfR16f: return 1;
|
||||
case ElfRgba16: return 4;
|
||||
case ElfRgb10A2: return 4;
|
||||
case ElfRgba8: return 4;
|
||||
case ElfRg16: return 2;
|
||||
case ElfRg8: return 2;
|
||||
case ElfR16: return 1;
|
||||
case ElfR8: return 1;
|
||||
case ElfRgba16Snorm: return 4;
|
||||
case ElfRgba8Snorm: return 4;
|
||||
case ElfRg16Snorm: return 2;
|
||||
case ElfRg8Snorm: return 2;
|
||||
case ElfR16Snorm: return 1;
|
||||
case ElfR8Snorm: return 1;
|
||||
|
||||
case ElfRgba32i: return 4;
|
||||
case ElfRgba16i: return 4;
|
||||
case ElfRgba8i: return 4;
|
||||
case ElfRg32i: return 2;
|
||||
case ElfRg16i: return 2;
|
||||
case ElfRg8i: return 2;
|
||||
case ElfR32i: return 1;
|
||||
case ElfR16i: return 1;
|
||||
case ElfR8i: return 1;
|
||||
|
||||
case ElfRgba32ui: return 4;
|
||||
case ElfRgba16ui: return 4;
|
||||
case ElfRgba8ui: return 4;
|
||||
case ElfRg32ui: return 2;
|
||||
case ElfRg16ui: return 2;
|
||||
case ElfRgb10a2ui: return 4;
|
||||
case ElfRg8ui: return 2;
|
||||
case ElfR32ui: return 1;
|
||||
case ElfR16ui: return 1;
|
||||
case ElfR8ui: return 1;
|
||||
default: return 4;
|
||||
}
|
||||
}
|
||||
static const char* getLayoutDepthString(TLayoutDepth d)
|
||||
{
|
||||
switch (d) {
|
||||
|
||||
Reference in New Issue
Block a user