Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
e47bfaed
Commit
e47bfaed
authored
Jun 23, 2018
by
Alex Smith
Committed by
Alex Smith
Jul 01, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for GL_EXT_samplerless_texture_functions
parent
0b964b3c
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
229 additions
and
20 deletions
+229
-20
samplerlessTextureFunctions.frag.out
Test/baseResults/samplerlessTextureFunctions.frag.out
+13
-0
spv.samplerlessTextureFunctions.frag.out
Test/baseResults/spv.samplerlessTextureFunctions.frag.out
+93
-0
spv.specConstant.vert.out
Test/baseResults/spv.specConstant.vert.out
+3
-3
samplerlessTextureFunctions.frag
Test/samplerlessTextureFunctions.frag
+46
-0
spv.samplerlessTextureFunctions.frag
Test/spv.samplerlessTextureFunctions.frag
+23
-0
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+16
-12
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+25
-0
Versions.cpp
glslang/MachineIndependent/Versions.cpp
+2
-0
Versions.h
glslang/MachineIndependent/Versions.h
+6
-5
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+2
-0
No files found.
Test/baseResults/samplerlessTextureFunctions.frag.out
0 → 100644
View file @
e47bfaed
samplerlessTextureFunctions.frag
ERROR: 0:9: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:10: 'texelFetch' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:16: 'texelFetchOffset' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:18: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:19: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:20: 'textureSize' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:22: 'textureQueryLevels' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 0:24: 'textureSamples' : required extension not requested: GL_EXT_samplerless_texture_functions
ERROR: 8 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
Test/baseResults/spv.samplerlessTextureFunctions.frag.out
0 → 100644
View file @
e47bfaed
spv.samplerlessTextureFunctions.frag
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 51
Capability Shader
Capability SampledBuffer
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_EXT_samplerless_texture_functions"
Name 4 "main"
Name 9 "tex2DFetch"
Name 12 "tex2D"
Name 19 "texMSFetch"
Name 22 "texMS"
Name 25 "bufFetch"
Name 28 "buf"
Name 31 "tex2DFetchOffset"
Name 35 "tex2DSize"
Name 38 "texMSSize"
Name 42 "bufSize"
Name 45 "tex2DLevels"
Name 48 "texMSSamples"
Decorate 12(tex2D) DescriptorSet 0
Decorate 12(tex2D) Binding 1
Decorate 22(texMS) DescriptorSet 0
Decorate 22(texMS) Binding 1
Decorate 28(buf) DescriptorSet 0
Decorate 28(buf) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypePointer UniformConstant 10
12(tex2D): 11(ptr) Variable UniformConstant
14: TypeInt 32 1
15: TypeVector 14(int) 2
16: 14(int) Constant 0
17: 15(ivec2) ConstantComposite 16 16
20: TypeImage 6(float) 2D multi-sampled sampled format:Unknown
21: TypePointer UniformConstant 20
22(texMS): 21(ptr) Variable UniformConstant
26: TypeImage 6(float) Buffer sampled format:Unknown
27: TypePointer UniformConstant 26
28(buf): 27(ptr) Variable UniformConstant
34: TypePointer Function 15(ivec2)
41: TypePointer Function 14(int)
4(main): 2 Function None 3
5: Label
9(tex2DFetch): 8(ptr) Variable Function
19(texMSFetch): 8(ptr) Variable Function
25(bufFetch): 8(ptr) Variable Function
31(tex2DFetchOffset): 8(ptr) Variable Function
35(tex2DSize): 34(ptr) Variable Function
38(texMSSize): 34(ptr) Variable Function
42(bufSize): 41(ptr) Variable Function
45(tex2DLevels): 41(ptr) Variable Function
48(texMSSamples): 41(ptr) Variable Function
13: 10 Load 12(tex2D)
18: 7(fvec4) ImageFetch 13 17 Lod 16
Store 9(tex2DFetch) 18
23: 20 Load 22(texMS)
24: 7(fvec4) ImageFetch 23 17 Sample 16
Store 19(texMSFetch) 24
29: 26 Load 28(buf)
30: 7(fvec4) ImageFetch 29 16
Store 25(bufFetch) 30
32: 10 Load 12(tex2D)
33: 7(fvec4) ImageFetch 32 17 Lod ConstOffset 16 17
Store 31(tex2DFetchOffset) 33
36: 10 Load 12(tex2D)
37: 15(ivec2) ImageQuerySizeLod 36 16
Store 35(tex2DSize) 37
39: 20 Load 22(texMS)
40: 15(ivec2) ImageQuerySize 39
Store 38(texMSSize) 40
43: 26 Load 28(buf)
44: 14(int) ImageQuerySize 43
Store 42(bufSize) 44
46: 10 Load 12(tex2D)
47: 14(int) ImageQueryLevels 46
Store 45(tex2DLevels) 47
49: 20 Load 22(texMS)
50: 14(int) ImageQuerySamples 49
Store 48(texMSSamples) 50
Return
FunctionEnd
Test/baseResults/spv.specConstant.vert.out
View file @
e47bfaed
...
@@ -11,7 +11,7 @@ spv.specConstant.vert
...
@@ -11,7 +11,7 @@ spv.specConstant.vert
Source GLSL 400
Source GLSL 400
Name 4 "main"
Name 4 "main"
Name 9 "arraySize"
Name 9 "arraySize"
Name 14 "foo(vf4[s2
468
];"
Name 14 "foo(vf4[s2
543
];"
Name 13 "p"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 17 "builtin_spec_constant("
Name 20 "color"
Name 20 "color"
...
@@ -102,10 +102,10 @@ spv.specConstant.vert
...
@@ -102,10 +102,10 @@ spv.specConstant.vert
Store 20(color) 46
Store 20(color) 46
48: 10 Load 22(ucol)
48: 10 Load 22(ucol)
Store 47(param) 48
Store 47(param) 48
49: 2 FunctionCall 14(foo(vf4[s2
468
];) 47(param)
49: 2 FunctionCall 14(foo(vf4[s2
543
];) 47(param)
Return
Return
FunctionEnd
FunctionEnd
14(foo(vf4[s2
468
];): 2 Function None 12
14(foo(vf4[s2
543
];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
13(p): 11(ptr) FunctionParameter
15: Label
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
54: 24(ptr) AccessChain 53(dupUcol) 23
...
...
Test/samplerlessTextureFunctions.frag
0 → 100644
View file @
e47bfaed
#version 450 core
layout
(
binding
=
1
)
uniform
texture2D
tex2D
;
layout
(
binding
=
1
)
uniform
texture2DMS
texMS
;
layout
(
binding
=
0
)
uniform
textureBuffer
buf
;
void
testBad
()
{
vec4
tex2DFetch
=
texelFetch
(
tex2D
,
ivec2
(
0
,
0
),
0
);
vec4
texMSFetch
=
texelFetch
(
texMS
,
ivec2
(
0
,
0
),
0
);
// Allowed by KHR_vulkan_glsl without the extension. All others should
// error.
vec4
bufFetch
=
texelFetch
(
buf
,
0
);
vec4
tex2DFetchOffset
=
texelFetchOffset
(
tex2D
,
ivec2
(
0
,
0
),
0
,
ivec2
(
0
,
0
));
ivec2
tex2DSize
=
textureSize
(
tex2D
,
0
);
ivec2
texMSSize
=
textureSize
(
texMS
);
int
bufSize
=
textureSize
(
buf
);
int
tex2DLevels
=
textureQueryLevels
(
tex2D
);
int
texMSSamples
=
textureSamples
(
texMS
);
}
#extension GL_EXT_samplerless_texture_functions : enable
void
main
()
{
// These should all succeed.
vec4
tex2DFetch
=
texelFetch
(
tex2D
,
ivec2
(
0
,
0
),
0
);
vec4
texMSFetch
=
texelFetch
(
texMS
,
ivec2
(
0
,
0
),
0
);
vec4
bufFetch
=
texelFetch
(
buf
,
0
);
vec4
tex2DFetchOffset
=
texelFetchOffset
(
tex2D
,
ivec2
(
0
,
0
),
0
,
ivec2
(
0
,
0
));
ivec2
tex2DSize
=
textureSize
(
tex2D
,
0
);
ivec2
texMSSize
=
textureSize
(
texMS
);
int
bufSize
=
textureSize
(
buf
);
int
tex2DLevels
=
textureQueryLevels
(
tex2D
);
int
texMSSamples
=
textureSamples
(
texMS
);
}
Test/spv.samplerlessTextureFunctions.frag
0 → 100644
View file @
e47bfaed
#version 450 core
#extension GL_EXT_samplerless_texture_functions : enable
layout
(
binding
=
1
)
uniform
texture2D
tex2D
;
layout
(
binding
=
1
)
uniform
texture2DMS
texMS
;
layout
(
binding
=
0
)
uniform
textureBuffer
buf
;
void
main
()
{
vec4
tex2DFetch
=
texelFetch
(
tex2D
,
ivec2
(
0
,
0
),
0
);
vec4
texMSFetch
=
texelFetch
(
texMS
,
ivec2
(
0
,
0
),
0
);
vec4
bufFetch
=
texelFetch
(
buf
,
0
);
vec4
tex2DFetchOffset
=
texelFetchOffset
(
tex2D
,
ivec2
(
0
,
0
),
0
,
ivec2
(
0
,
0
));
ivec2
tex2DSize
=
textureSize
(
tex2D
,
0
);
ivec2
texMSSize
=
textureSize
(
texMS
);
int
bufSize
=
textureSize
(
buf
);
int
tex2DLevels
=
textureQueryLevels
(
tex2D
);
int
texMSSamples
=
textureSamples
(
texMS
);
}
glslang/MachineIndependent/Initialize.cpp
View file @
e47bfaed
...
@@ -5914,15 +5914,19 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
...
@@ -5914,15 +5914,19 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
addSamplingFunctions
(
sampler
,
typeName
,
version
,
profile
);
addSamplingFunctions
(
sampler
,
typeName
,
version
,
profile
);
addGatherFunctions
(
sampler
,
typeName
,
version
,
profile
);
addGatherFunctions
(
sampler
,
typeName
,
version
,
profile
);
if
(
spvVersion
.
vulkan
>
0
&&
sampler
.
dim
==
EsdBuffer
&&
sampler
.
isCombined
())
{
if
(
spvVersion
.
vulkan
>
0
&&
sampler
.
isCombined
()
&&
!
sampler
.
shadow
)
{
// Vulkan wants a textureBuffer to allow texelFetch() --
// Base Vulkan allows texelFetch() for
// a sampled image with no sampler.
// textureBuffer (i.e. without sampler).
// So, add sampling functions for both the
//
// samplerBuffer and textureBuffer types.
// GL_EXT_samplerless_texture_functions
// allows texelFetch() and query functions
// (other than textureQueryLod()) for all
// texture types.
sampler
.
setTexture
(
sampler
.
type
,
sampler
.
dim
,
sampler
.
arrayed
,
sampler
.
shadow
,
sampler
.
setTexture
(
sampler
.
type
,
sampler
.
dim
,
sampler
.
arrayed
,
sampler
.
shadow
,
sampler
.
ms
);
sampler
.
ms
);
TString
textureTypeName
=
sampler
.
getString
();
TString
textureTypeName
=
sampler
.
getString
();
addSamplingFunctions
(
sampler
,
textureTypeName
,
version
,
profile
);
addSamplingFunctions
(
sampler
,
textureTypeName
,
version
,
profile
);
addQueryFunctions
(
sampler
,
textureTypeName
,
version
,
profile
);
}
}
}
}
}
}
...
@@ -5995,7 +5999,7 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
...
@@ -5995,7 +5999,7 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
// textureQueryLod(), fragment stage only
// textureQueryLod(), fragment stage only
//
//
if
(
profile
!=
EEsProfile
&&
version
>=
400
&&
!
sampler
.
image
&&
sampler
.
dim
!=
EsdRect
&&
!
sampler
.
ms
&&
sampler
.
dim
!=
EsdBuffer
)
{
if
(
profile
!=
EEsProfile
&&
version
>=
400
&&
sampler
.
combined
&&
sampler
.
dim
!=
EsdRect
&&
!
sampler
.
ms
&&
sampler
.
dim
!=
EsdBuffer
)
{
#ifdef AMD_EXTENSIONS
#ifdef AMD_EXTENSIONS
for
(
int
f16TexAddr
=
0
;
f16TexAddr
<
2
;
++
f16TexAddr
)
{
for
(
int
f16TexAddr
=
0
;
f16TexAddr
<
2
;
++
f16TexAddr
)
{
if
(
f16TexAddr
&&
sampler
.
type
!=
EbtFloat16
)
if
(
f16TexAddr
&&
sampler
.
type
!=
EbtFloat16
)
...
@@ -6200,12 +6204,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
...
@@ -6200,12 +6204,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
//
//
for
(
int
proj
=
0
;
proj
<=
1
;
++
proj
)
{
// loop over "bool" projective or not
for
(
int
proj
=
0
;
proj
<=
1
;
++
proj
)
{
// loop over "bool" projective or not
if
(
proj
&&
(
sampler
.
dim
==
EsdCube
||
sampler
.
dim
==
EsdBuffer
||
sampler
.
arrayed
||
sampler
.
ms
))
if
(
proj
&&
(
sampler
.
dim
==
EsdCube
||
sampler
.
dim
==
EsdBuffer
||
sampler
.
arrayed
||
sampler
.
ms
||
!
sampler
.
combined
))
continue
;
continue
;
for
(
int
lod
=
0
;
lod
<=
1
;
++
lod
)
{
for
(
int
lod
=
0
;
lod
<=
1
;
++
lod
)
{
if
(
lod
&&
(
sampler
.
dim
==
EsdBuffer
||
sampler
.
dim
==
EsdRect
||
sampler
.
ms
))
if
(
lod
&&
(
sampler
.
dim
==
EsdBuffer
||
sampler
.
dim
==
EsdRect
||
sampler
.
ms
||
!
sampler
.
combined
))
continue
;
continue
;
if
(
lod
&&
sampler
.
dim
==
Esd2D
&&
sampler
.
arrayed
&&
sampler
.
shadow
)
if
(
lod
&&
sampler
.
dim
==
Esd2D
&&
sampler
.
arrayed
&&
sampler
.
shadow
)
continue
;
continue
;
...
@@ -6214,7 +6218,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
...
@@ -6214,7 +6218,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
for
(
int
bias
=
0
;
bias
<=
1
;
++
bias
)
{
for
(
int
bias
=
0
;
bias
<=
1
;
++
bias
)
{
if
(
bias
&&
(
lod
||
sampler
.
ms
))
if
(
bias
&&
(
lod
||
sampler
.
ms
||
!
sampler
.
combined
))
continue
;
continue
;
if
(
bias
&&
(
sampler
.
dim
==
Esd2D
||
sampler
.
dim
==
EsdCube
)
&&
sampler
.
shadow
&&
sampler
.
arrayed
)
if
(
bias
&&
(
sampler
.
dim
==
Esd2D
||
sampler
.
dim
==
EsdCube
)
&&
sampler
.
shadow
&&
sampler
.
arrayed
)
continue
;
continue
;
...
@@ -6236,12 +6240,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
...
@@ -6236,12 +6240,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
continue
;
continue
;
if
(
fetch
&&
(
sampler
.
shadow
||
sampler
.
dim
==
EsdCube
))
if
(
fetch
&&
(
sampler
.
shadow
||
sampler
.
dim
==
EsdCube
))
continue
;
continue
;
if
(
fetch
==
0
&&
(
sampler
.
ms
||
sampler
.
dim
==
EsdBuffer
))
if
(
fetch
==
0
&&
(
sampler
.
ms
||
sampler
.
dim
==
EsdBuffer
||
!
sampler
.
combined
))
continue
;
continue
;
for
(
int
grad
=
0
;
grad
<=
1
;
++
grad
)
{
// loop over "bool" grad or not
for
(
int
grad
=
0
;
grad
<=
1
;
++
grad
)
{
// loop over "bool" grad or not
if
(
grad
&&
(
lod
||
bias
||
sampler
.
ms
))
if
(
grad
&&
(
lod
||
bias
||
sampler
.
ms
||
!
sampler
.
combined
))
continue
;
continue
;
if
(
grad
&&
sampler
.
dim
==
EsdBuffer
)
if
(
grad
&&
sampler
.
dim
==
EsdBuffer
)
continue
;
continue
;
...
@@ -6263,7 +6267,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
...
@@ -6263,7 +6267,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
if
(
extraProj
&&
!
proj
)
if
(
extraProj
&&
!
proj
)
continue
;
continue
;
if
(
extraProj
&&
(
sampler
.
dim
==
Esd3D
||
sampler
.
shadow
))
if
(
extraProj
&&
(
sampler
.
dim
==
Esd3D
||
sampler
.
shadow
||
!
sampler
.
combined
))
continue
;
continue
;
#ifdef AMD_EXTENSIONS
#ifdef AMD_EXTENSIONS
for
(
int
f16TexAddr
=
0
;
f16TexAddr
<=
1
;
++
f16TexAddr
)
{
// loop over 16-bit floating-point texel addressing
for
(
int
f16TexAddr
=
0
;
f16TexAddr
<=
1
;
++
f16TexAddr
)
{
// loop over 16-bit floating-point texel addressing
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
e47bfaed
...
@@ -1705,6 +1705,31 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
...
@@ -1705,6 +1705,31 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
break
;
break
;
}
}
// Texture operations on texture objects (aside from texelFetch on a
// textureBuffer) require EXT_samplerless_texture_functions.
switch
(
callNode
.
getOp
())
{
case
EOpTextureQuerySize
:
case
EOpTextureQueryLevels
:
case
EOpTextureQuerySamples
:
case
EOpTextureFetch
:
case
EOpTextureFetchOffset
:
{
const
TSampler
&
sampler
=
fnCandidate
[
0
].
type
->
getSampler
();
const
bool
isTexture
=
sampler
.
isTexture
()
&&
!
sampler
.
isCombined
();
const
bool
isBuffer
=
sampler
.
dim
==
EsdBuffer
;
const
bool
isFetch
=
callNode
.
getOp
()
==
EOpTextureFetch
||
callNode
.
getOp
()
==
EOpTextureFetchOffset
;
if
(
isTexture
&&
(
!
isBuffer
||
!
isFetch
))
requireExtensions
(
loc
,
1
,
&
E_GL_EXT_samplerless_texture_functions
,
fnCandidate
.
getName
().
c_str
());
break
;
}
default
:
break
;
}
if
(
callNode
.
getOp
()
>
EOpSubgroupGuardStart
&&
callNode
.
getOp
()
<
EOpSubgroupGuardStop
)
{
if
(
callNode
.
getOp
()
>
EOpSubgroupGuardStart
&&
callNode
.
getOp
()
<
EOpSubgroupGuardStop
)
{
// these require SPIR-V 1.3
// these require SPIR-V 1.3
if
(
spvVersion
.
spv
>
0
&&
spvVersion
.
spv
<
EShTargetSpv_1_3
)
if
(
spvVersion
.
spv
>
0
&&
spvVersion
.
spv
<
EShTargetSpv_1_3
)
...
...
glslang/MachineIndependent/Versions.cpp
View file @
e47bfaed
...
@@ -200,6 +200,7 @@ void TParseVersions::initializeExtensionBehavior()
...
@@ -200,6 +200,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior
[
E_GL_EXT_post_depth_coverage
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_post_depth_coverage
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_control_flow_attributes
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_control_flow_attributes
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_nonuniform_qualifier
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_nonuniform_qualifier
]
=
EBhDisable
;
extensionBehavior
[
E_GL_EXT_samplerless_texture_functions
]
=
EBhDisable
;
// #line and #include
// #line and #include
extensionBehavior
[
E_GL_GOOGLE_cpp_style_line_directive
]
=
EBhDisable
;
extensionBehavior
[
E_GL_GOOGLE_cpp_style_line_directive
]
=
EBhDisable
;
...
@@ -362,6 +363,7 @@ void TParseVersions::getPreamble(std::string& preamble)
...
@@ -362,6 +363,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_post_depth_coverage 1
\n
"
"#define GL_EXT_post_depth_coverage 1
\n
"
"#define GL_EXT_control_flow_attributes 1
\n
"
"#define GL_EXT_control_flow_attributes 1
\n
"
"#define GL_EXT_nonuniform_qualifier 1
\n
"
"#define GL_EXT_nonuniform_qualifier 1
\n
"
"#define GL_EXT_samplerless_texture_functions 1
\n
"
// GL_KHR_shader_subgroup
// GL_KHR_shader_subgroup
"#define GL_KHR_shader_subgroup_basic 1
\n
"
"#define GL_KHR_shader_subgroup_basic 1
\n
"
...
...
glslang/MachineIndependent/Versions.h
View file @
e47bfaed
...
@@ -153,11 +153,12 @@ const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_sha
...
@@ -153,11 +153,12 @@ const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_sha
const
char
*
const
E_GL_EXT_shader_image_load_formatted
=
"GL_EXT_shader_image_load_formatted"
;
const
char
*
const
E_GL_EXT_shader_image_load_formatted
=
"GL_EXT_shader_image_load_formatted"
;
// EXT extensions
// EXT extensions
const
char
*
const
E_GL_EXT_device_group
=
"GL_EXT_device_group"
;
const
char
*
const
E_GL_EXT_device_group
=
"GL_EXT_device_group"
;
const
char
*
const
E_GL_EXT_multiview
=
"GL_EXT_multiview"
;
const
char
*
const
E_GL_EXT_multiview
=
"GL_EXT_multiview"
;
const
char
*
const
E_GL_EXT_post_depth_coverage
=
"GL_EXT_post_depth_coverage"
;
const
char
*
const
E_GL_EXT_post_depth_coverage
=
"GL_EXT_post_depth_coverage"
;
const
char
*
const
E_GL_EXT_control_flow_attributes
=
"GL_EXT_control_flow_attributes"
;
const
char
*
const
E_GL_EXT_control_flow_attributes
=
"GL_EXT_control_flow_attributes"
;
const
char
*
const
E_GL_EXT_nonuniform_qualifier
=
"GL_EXT_nonuniform_qualifier"
;
const
char
*
const
E_GL_EXT_nonuniform_qualifier
=
"GL_EXT_nonuniform_qualifier"
;
const
char
*
const
E_GL_EXT_samplerless_texture_functions
=
"GL_EXT_samplerless_texture_functions"
;
// Arrays of extensions for the above viewportEXTs duplications
// Arrays of extensions for the above viewportEXTs duplications
...
...
gtests/Spv.FromFile.cpp
View file @
e47bfaed
...
@@ -344,6 +344,7 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -344,6 +344,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.xfb.vert"
,
"spv.xfb.vert"
,
"spv.xfb2.vert"
,
"spv.xfb2.vert"
,
"spv.xfb3.vert"
,
"spv.xfb3.vert"
,
"spv.samplerlessTextureFunctions.frag"
,
})),
})),
FileNameAsCustomTestSuffix
FileNameAsCustomTestSuffix
);
);
...
@@ -433,6 +434,7 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -433,6 +434,7 @@ INSTANTIATE_TEST_CASE_P(
"vulkan.frag"
,
"vulkan.frag"
,
"vulkan.vert"
,
"vulkan.vert"
,
"vulkan.comp"
,
"vulkan.comp"
,
"samplerlessTextureFunctions.frag"
,
})),
})),
FileNameAsCustomTestSuffix
FileNameAsCustomTestSuffix
);
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment