ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
This commit is contained in:
parent
efd47a8fae
commit
df1d4ccf5f
@ -293,7 +293,7 @@ class TProgram
|
|||||||
|
|
||||||
For just validating (not generating code), subsitute these calls:
|
For just validating (not generating code), subsitute these calls:
|
||||||
|
|
||||||
```
|
```cxx
|
||||||
setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0);
|
setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0);
|
||||||
setEnvClient(EShClientNone, 0);
|
setEnvClient(EShClientNone, 0);
|
||||||
setEnvTarget(EShTargetNone, 0);
|
setEnvTarget(EShTargetNone, 0);
|
||||||
|
@ -1,6 +1,25 @@
|
|||||||
glspv.esversion.vert
|
glspv.esversion.vert
|
||||||
ERROR: #version: ES shaders for OpenGL SPIR-V are not supported
|
// Module Version 10000
|
||||||
ERROR: 1 compilation errors. No code generated.
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 10
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
SPIR-V is not generated for failed compile or link
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 8 9
|
||||||
|
Source ESSL 310
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "gl_VertexID"
|
||||||
|
Name 9 "gl_InstanceID"
|
||||||
|
Decorate 8(gl_VertexID) BuiltIn VertexId
|
||||||
|
Decorate 9(gl_InstanceID) BuiltIn InstanceId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypePointer Input 6(int)
|
||||||
|
8(gl_VertexID): 7(ptr) Variable Input
|
||||||
|
9(gl_InstanceID): 7(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
@ -646,14 +646,9 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
|
|||||||
if (spvVersion.spv != 0) {
|
if (spvVersion.spv != 0) {
|
||||||
switch (profile) {
|
switch (profile) {
|
||||||
case EEsProfile:
|
case EEsProfile:
|
||||||
if (spvVersion.vulkan > 0 && version < 310) {
|
if (version < 310) {
|
||||||
correct = false;
|
correct = false;
|
||||||
infoSink.info.message(EPrefixError, "#version: ES shaders for Vulkan SPIR-V require version 310 or higher");
|
infoSink.info.message(EPrefixError, "#version: ES shaders for SPIR-V require version 310 or higher");
|
||||||
version = 310;
|
|
||||||
}
|
|
||||||
if (spvVersion.openGl >= 100) {
|
|
||||||
correct = false;
|
|
||||||
infoSink.info.message(EPrefixError, "#version: ES shaders for OpenGL SPIR-V are not supported");
|
|
||||||
version = 310;
|
version = 310;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -126,8 +126,8 @@ class TType;
|
|||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
EShSourceNone,
|
EShSourceNone,
|
||||||
EShSourceGlsl,
|
EShSourceGlsl, // GLSL, includes ESSL (OpenGL ES GLSL)
|
||||||
EShSourceHlsl,
|
EShSourceHlsl, // HLSL
|
||||||
} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead
|
} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user