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
8adc2f56
Commit
8adc2f56
authored
May 30, 2019
by
Jeff Bolz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allow runtime-sized arrays of acceleration structures
parent
625eb25d
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
166 additions
and
0 deletions
+166
-0
spv.RayGenShaderArray.rgen.out
Test/baseResults/spv.RayGenShaderArray.rgen.out
+140
-0
spv.RayGenShaderArray.rgen
Test/spv.RayGenShaderArray.rgen
+22
-0
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+3
-0
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+1
-0
No files found.
Test/baseResults/spv.RayGenShaderArray.rgen.out
0 → 100644
View file @
8adc2f56
spv.RayGenShaderArray.rgen
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 89
Capability ShaderNonUniformEXT
Capability RuntimeDescriptorArrayEXT
Capability RayTracingNV
Extension "SPV_EXT_descriptor_indexing"
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint RayGenerationNV 4 "main" 11 21
Source GLSL 460
SourceExtension "GL_EXT_nonuniform_qualifier"
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
Name 8 "lx"
Name 11 "gl_LaunchIDNV"
Name 16 "ly"
Name 20 "sx"
Name 21 "gl_LaunchSizeNV"
Name 24 "sy"
Name 30 "accNV0"
Name 34 "block"
MemberName 34(block) 0 "dir"
MemberName 34(block) 1 "origin"
MemberName 34(block) 2 "i"
Name 36 ""
Name 60 "accNV1"
Name 88 "payload"
Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
Decorate 30(accNV0) DescriptorSet 0
Decorate 30(accNV0) Binding 0
MemberDecorate 34(block) 0 Offset 0
MemberDecorate 34(block) 1 Offset 16
MemberDecorate 34(block) 2 Offset 28
Decorate 34(block) BufferBlock
Decorate 60(accNV1) DescriptorSet 0
Decorate 60(accNV1) Binding 1
Decorate 75 DecorationNonUniformEXT
Decorate 77 DecorationNonUniformEXT
Decorate 88(payload) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypeVector 6(int) 3
10: TypePointer Input 9(ivec3)
11(gl_LaunchIDNV): 10(ptr) Variable Input
12: 6(int) Constant 0
13: TypePointer Input 6(int)
17: 6(int) Constant 1
21(gl_LaunchSizeNV): 10(ptr) Variable Input
27: TypeAccelerationStructureNV
28: TypeRuntimeArray 27
29: TypePointer UniformConstant 28
30(accNV0): 29(ptr) Variable UniformConstant
31: TypeFloat 32
32: TypeVector 31(float) 3
33: TypeInt 32 1
34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int)
35: TypePointer ShaderRecordBufferNV 34(block)
36: 35(ptr) Variable ShaderRecordBufferNV
37: 33(int) Constant 2
38: TypePointer ShaderRecordBufferNV 33(int)
41: TypePointer UniformConstant 27
48: 33(int) Constant 1
49: TypePointer ShaderRecordBufferNV 32(fvec3)
52: 31(float) Constant 1056964608
53: 33(int) Constant 0
56: 31(float) Constant 1061158912
57: 6(int) Constant 2
58: TypeArray 27 57
59: TypePointer UniformConstant 58
60(accNV1): 59(ptr) Variable UniformConstant
86: TypeVector 31(float) 4
87: TypePointer RayPayloadNV 86(fvec4)
88(payload): 87(ptr) Variable RayPayloadNV
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
16(ly): 7(ptr) Variable Function
20(sx): 7(ptr) Variable Function
24(sy): 7(ptr) Variable Function
14: 13(ptr) AccessChain 11(gl_LaunchIDNV) 12
15: 6(int) Load 14
Store 8(lx) 15
18: 13(ptr) AccessChain 11(gl_LaunchIDNV) 17
19: 6(int) Load 18
Store 16(ly) 19
22: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 12
23: 6(int) Load 22
Store 20(sx) 23
25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17
26: 6(int) Load 25
Store 24(sy) 26
39: 38(ptr) AccessChain 36 37
40: 33(int) Load 39
42: 41(ptr) AccessChain 30(accNV0) 40
43: 27 Load 42
44: 6(int) Load 8(lx)
45: 6(int) Load 16(ly)
46: 6(int) Load 20(sx)
47: 6(int) Load 24(sy)
50: 49(ptr) AccessChain 36 48
51: 32(fvec3) Load 50
54: 49(ptr) AccessChain 36 53
55: 32(fvec3) Load 54
TraceNV 43 44 45 46 47 12 51 52 55 56 48
61: 38(ptr) AccessChain 36 37
62: 33(int) Load 61
63: 41(ptr) AccessChain 60(accNV1) 62
64: 27 Load 63
65: 6(int) Load 8(lx)
66: 6(int) Load 16(ly)
67: 6(int) Load 20(sx)
68: 6(int) Load 24(sy)
69: 49(ptr) AccessChain 36 48
70: 32(fvec3) Load 69
71: 49(ptr) AccessChain 36 53
72: 32(fvec3) Load 71
TraceNV 64 65 66 67 68 12 70 52 72 56 48
73: 38(ptr) AccessChain 36 37
74: 33(int) Load 73
75: 33(int) CopyObject 74
76: 41(ptr) AccessChain 30(accNV0) 75
77: 27 Load 76
78: 6(int) Load 8(lx)
79: 6(int) Load 16(ly)
80: 6(int) Load 20(sx)
81: 6(int) Load 24(sy)
82: 49(ptr) AccessChain 36 48
83: 32(fvec3) Load 82
84: 49(ptr) AccessChain 36 53
85: 32(fvec3) Load 84
TraceNV 77 78 79 80 81 12 83 52 85 56 48
Return
FunctionEnd
Test/spv.RayGenShaderArray.rgen
0 → 100644
View file @
8adc2f56
#version 460
#extension GL_NV_ray_tracing : enable
#extension GL_EXT_nonuniform_qualifier : enable
layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0[];
layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1[2];
layout(location = 0) rayPayloadNV vec4 payload;
layout(shaderRecordNV) buffer block
{
vec3 dir;
vec3 origin;
int i;
};
void main()
{
uint lx = gl_LaunchIDNV.x;
uint ly = gl_LaunchIDNV.y;
uint sx = gl_LaunchSizeNV.x;
uint sy = gl_LaunchSizeNV.y;
traceNV(accNV0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceNV(accNV1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceNV(accNV0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
}
glslang/MachineIndependent/ParseHelper.cpp
View file @
8adc2f56
...
...
@@ -3894,6 +3894,9 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType
// check for additional things allowed by GL_EXT_nonuniform_qualifier
if
(
base
.
getBasicType
()
==
EbtSampler
||
#ifdef NV_EXTENSIONS
base
.
getBasicType
()
==
EbtAccStructNV
||
#endif
(
base
.
getBasicType
()
==
EbtBlock
&&
base
.
getType
().
getQualifier
().
isUniformOrBuffer
()))
requireExtensions
(
loc
,
1
,
&
E_GL_EXT_nonuniform_qualifier
,
"variable index"
);
else
...
...
gtests/Spv.FromFile.cpp
100755 → 100644
View file @
8adc2f56
...
...
@@ -593,6 +593,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.atomicInt64.comp"
,
"spv.shadingRate.frag"
,
"spv.RayGenShader.rgen"
,
"spv.RayGenShaderArray.rgen"
,
"spv.RayGenShader_Errors.rgen"
,
"spv.RayConstants.rgen"
,
"spv.IntersectShader.rint"
,
...
...
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