HLSL: Fix #1912: add attribute syntax for overriding image formats.
This commit is contained in:
parent
973d0e5382
commit
2d9b0a3550
14 changed files with 460 additions and 1 deletions
43
hlsl/hlslParseHelper.cpp
Normal file → Executable file
43
hlsl/hlslParseHelper.cpp
Normal file → Executable file
|
|
@ -1950,6 +1950,49 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr
|
|||
setSpecConstantId(loc, type.getQualifier(), value);
|
||||
}
|
||||
break;
|
||||
|
||||
// image formats
|
||||
case EatFormatRgba32f: type.getQualifier().layoutFormat = ElfRgba32f; break;
|
||||
case EatFormatRgba16f: type.getQualifier().layoutFormat = ElfRgba16f; break;
|
||||
case EatFormatR32f: type.getQualifier().layoutFormat = ElfR32f; break;
|
||||
case EatFormatRgba8: type.getQualifier().layoutFormat = ElfRgba8; break;
|
||||
case EatFormatRgba8Snorm: type.getQualifier().layoutFormat = ElfRgba8Snorm; break;
|
||||
case EatFormatRg32f: type.getQualifier().layoutFormat = ElfRg32f; break;
|
||||
case EatFormatRg16f: type.getQualifier().layoutFormat = ElfRg16f; break;
|
||||
case EatFormatR11fG11fB10f: type.getQualifier().layoutFormat = ElfR11fG11fB10f; break;
|
||||
case EatFormatR16f: type.getQualifier().layoutFormat = ElfR16f; break;
|
||||
case EatFormatRgba16: type.getQualifier().layoutFormat = ElfRgba16; break;
|
||||
case EatFormatRgb10A2: type.getQualifier().layoutFormat = ElfRgb10A2; break;
|
||||
case EatFormatRg16: type.getQualifier().layoutFormat = ElfRg16; break;
|
||||
case EatFormatRg8: type.getQualifier().layoutFormat = ElfRg8; break;
|
||||
case EatFormatR16: type.getQualifier().layoutFormat = ElfR16; break;
|
||||
case EatFormatR8: type.getQualifier().layoutFormat = ElfR8; break;
|
||||
case EatFormatRgba16Snorm: type.getQualifier().layoutFormat = ElfRgba16Snorm; break;
|
||||
case EatFormatRg16Snorm: type.getQualifier().layoutFormat = ElfRg16Snorm; break;
|
||||
case EatFormatRg8Snorm: type.getQualifier().layoutFormat = ElfRg8Snorm; break;
|
||||
case EatFormatR16Snorm: type.getQualifier().layoutFormat = ElfR16Snorm; break;
|
||||
case EatFormatR8Snorm: type.getQualifier().layoutFormat = ElfR8Snorm; break;
|
||||
case EatFormatRgba32i: type.getQualifier().layoutFormat = ElfRgba32i; break;
|
||||
case EatFormatRgba16i: type.getQualifier().layoutFormat = ElfRgba16i; break;
|
||||
case EatFormatRgba8i: type.getQualifier().layoutFormat = ElfRgba8i; break;
|
||||
case EatFormatR32i: type.getQualifier().layoutFormat = ElfR32i; break;
|
||||
case EatFormatRg32i: type.getQualifier().layoutFormat = ElfRg32i; break;
|
||||
case EatFormatRg16i: type.getQualifier().layoutFormat = ElfRg16i; break;
|
||||
case EatFormatRg8i: type.getQualifier().layoutFormat = ElfRg8i; break;
|
||||
case EatFormatR16i: type.getQualifier().layoutFormat = ElfR16i; break;
|
||||
case EatFormatR8i: type.getQualifier().layoutFormat = ElfR8i; break;
|
||||
case EatFormatRgba32ui: type.getQualifier().layoutFormat = ElfRgba32ui; break;
|
||||
case EatFormatRgba16ui: type.getQualifier().layoutFormat = ElfRgba16ui; break;
|
||||
case EatFormatRgba8ui: type.getQualifier().layoutFormat = ElfRgba8ui; break;
|
||||
case EatFormatR32ui: type.getQualifier().layoutFormat = ElfR32ui; break;
|
||||
case EatFormatRgb10a2ui: type.getQualifier().layoutFormat = ElfRgb10a2ui; break;
|
||||
case EatFormatRg32ui: type.getQualifier().layoutFormat = ElfRg32ui; break;
|
||||
case EatFormatRg16ui: type.getQualifier().layoutFormat = ElfRg16ui; break;
|
||||
case EatFormatRg8ui: type.getQualifier().layoutFormat = ElfRg8ui; break;
|
||||
case EatFormatR16ui: type.getQualifier().layoutFormat = ElfR16ui; break;
|
||||
case EatFormatR8ui: type.getQualifier().layoutFormat = ElfR8ui; break;
|
||||
case EatFormatUnknown: type.getQualifier().layoutFormat = ElfNone; break;
|
||||
|
||||
default:
|
||||
if (! allowEntry)
|
||||
warn(loc, "attribute does not apply to a type", "", "");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue