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
d698ebf5
Commit
d698ebf5
authored
Oct 17, 2018
by
Rex Xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix a parse issue of imageAtomicCompSwap()
The max count of arguments is 5 when image2DMS/image2DMSArray is specified.
parent
e9405d0b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
32 deletions
+64
-32
spv.image.frag.out
Test/baseResults/spv.image.frag.out
+58
-31
spv.image.frag
Test/spv.image.frag
+4
-0
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+2
-1
No files found.
Test/baseResults/spv.image.frag.out
View file @
d698ebf5
...
@@ -5,7 +5,7 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -5,7 +5,7 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80007
// Generated by (magic number): 80007
// Id's are bound by 3
76
// Id's are bound by 3
95
Capability Shader
Capability Shader
Capability StorageImageMultisample
Capability StorageImageMultisample
...
@@ -19,7 +19,7 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -19,7 +19,7 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
Capability StorageImageWriteWithoutFormat
Capability StorageImageWriteWithoutFormat
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 132 142 152 248 3
62 375
EntryPoint Fragment 4 "main" 132 142 152 248 3
81 394
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Source GLSL 450
Name 4 "main"
Name 4 "main"
...
@@ -43,9 +43,11 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -43,9 +43,11 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
Name 232 "ii1D"
Name 232 "ii1D"
Name 245 "ui2D"
Name 245 "ui2D"
Name 248 "value"
Name 248 "value"
Name 357 "wo2D"
Name 357 "ii2DMS"
Name 362 "fragData"
Name 367 "ui2DMSArray"
Name 375 "ic4D"
Name 376 "wo2D"
Name 381 "fragData"
Name 394 "ic4D"
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) Binding 0
Decorate 15(i1D) Binding 0
Decorate 27(i2D) DescriptorSet 0
Decorate 27(i2D) DescriptorSet 0
...
@@ -76,10 +78,14 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -76,10 +78,14 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
Decorate 245(ui2D) DescriptorSet 0
Decorate 245(ui2D) DescriptorSet 0
Decorate 245(ui2D) Binding 12
Decorate 245(ui2D) Binding 12
Decorate 248(value) Flat
Decorate 248(value) Flat
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(ii2DMS) DescriptorSet 0
Decorate 357(wo2D) Binding 1
Decorate 357(ii2DMS) Binding 13
Decorate 357(wo2D) NonReadable
Decorate 367(ui2DMSArray) DescriptorSet 0
Decorate 375(ic4D) Flat
Decorate 367(ui2DMSArray) Binding 14
Decorate 376(wo2D) DescriptorSet 0
Decorate 376(wo2D) Binding 1
Decorate 376(wo2D) NonReadable
Decorate 394(ic4D) Flat
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeInt 32 1
6: TypeInt 32 1
...
@@ -161,16 +167,22 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -161,16 +167,22 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
340: 6(int) Constant 18
340: 6(int) Constant 18
341: 6(int) Constant 17
341: 6(int) Constant 17
349: 18(int) Constant 19
349: 18(int) Constant 19
355: TypeImage
12(float) 2D nonsampled format:Unknown
355: TypeImage
6(int) 2D multi-sampled nonsampled format:R32i
356: TypePointer UniformConstant 355
356: TypePointer UniformConstant 355
357(wo2D): 356(ptr) Variable UniformConstant
357(ii2DMS): 356(ptr) Variable UniformConstant
361: TypePointer Output 125(fvec4)
365: TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
362(fragData): 361(ptr) Variable Output
366: TypePointer UniformConstant 365
367: TypeBool
367(ui2DMSArray): 366(ptr) Variable UniformConstant
370: TypeVector 367(bool) 4
374: TypeImage 12(float) 2D nonsampled format:Unknown
373: TypeVector 6(int) 4
375: TypePointer UniformConstant 374
374: TypePointer Input 373(ivec4)
376(wo2D): 375(ptr) Variable UniformConstant
375(ic4D): 374(ptr) Variable Input
380: TypePointer Output 125(fvec4)
381(fragData): 380(ptr) Variable Output
386: TypeBool
389: TypeVector 386(bool) 4
392: TypeVector 6(int) 4
393: TypePointer Input 392(ivec4)
394(ic4D): 393(ptr) Variable Input
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
9(iv): 8(ptr) Variable Function
9(iv): 8(ptr) Variable Function
...
@@ -497,18 +509,33 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
...
@@ -497,18 +509,33 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
353: 18(int) Load 229(ui)
353: 18(int) Load 229(ui)
354: 18(int) IAdd 353 352
354: 18(int) IAdd 353 352
Store 229(ui) 354
Store 229(ui) 354
358: 355 Load 357(wo2D)
358: 29(ivec2) Load 142(ic2D)
359: 29(ivec2) Load 142(ic2D)
359: 235(ptr) ImageTexelPointer 357(ii2DMS) 358 216
360: 125(fvec4) Load 127(v)
360: 6(int) AtomicCompareExchange 359 237 19 19 341 340
ImageWrite 358 359 360
361: 20(ptr) AccessChain 9(iv) 19
363: 18(int) Load 229(ui)
362: 6(int) Load 361
364: 20(ptr) AccessChain 9(iv) 237
363: 6(int) IAdd 362 360
365: 6(int) Load 364
364: 20(ptr) AccessChain 9(iv) 19
366: 18(int) Bitcast 365
Store 364 363
368: 367(bool) INotEqual 363 366
368: 7(ivec3) Load 152(ic3D)
369: 125(fvec4) Load 127(v)
369: 18(int) Load 248(value)
371: 370(bvec4) CompositeConstruct 368 368 368 368
370: 250(ptr) ImageTexelPointer 367(ui2DMSArray) 368 220
372: 125(fvec4) Select 371 369 129
371: 18(int) AtomicCompareExchange 370 237 19 19 369 349
Store 362(fragData) 372
372: 18(int) Load 229(ui)
373: 18(int) IAdd 372 371
Store 229(ui) 373
377: 374 Load 376(wo2D)
378: 29(ivec2) Load 142(ic2D)
379: 125(fvec4) Load 127(v)
ImageWrite 377 378 379
382: 18(int) Load 229(ui)
383: 20(ptr) AccessChain 9(iv) 237
384: 6(int) Load 383
385: 18(int) Bitcast 384
387: 386(bool) INotEqual 382 385
388: 125(fvec4) Load 127(v)
390: 389(bvec4) CompositeConstruct 387 387 387 387
391: 125(fvec4) Select 390 388 129
Store 381(fragData) 391
Return
Return
FunctionEnd
FunctionEnd
Test/spv.image.frag
View file @
d698ebf5
...
@@ -14,6 +14,8 @@ layout(rgba32f, binding = 10) uniform image2DMSArray i2DMSArray;
...
@@ -14,6 +14,8 @@ layout(rgba32f, binding = 10) uniform image2DMSArray i2DMSArray;
layout
(
r32i
,
binding
=
11
)
uniform
iimage1D
ii1D
;
layout
(
r32i
,
binding
=
11
)
uniform
iimage1D
ii1D
;
layout
(
r32ui
,
binding
=
12
)
uniform
uimage2D
ui2D
;
layout
(
r32ui
,
binding
=
12
)
uniform
uimage2D
ui2D
;
layout
(
r32i
,
binding
=
13
)
uniform
iimage2DMS
ii2DMS
;
layout
(
r32ui
,
binding
=
14
)
uniform
uimage2DMSArray
ui2DMSArray
;
flat
in
int
ic1D
;
flat
in
int
ic1D
;
flat
in
ivec2
ic2D
;
flat
in
ivec2
ic2D
;
...
@@ -85,6 +87,8 @@ void main()
...
@@ -85,6 +87,8 @@ void main()
ui
+=
imageAtomicExchange
(
ui2D
,
ic2D
,
value
);
ui
+=
imageAtomicExchange
(
ui2D
,
ic2D
,
value
);
iv
.
x
+=
imageAtomicCompSwap
(
ii1D
,
ic1D
,
18
,
17
);
iv
.
x
+=
imageAtomicCompSwap
(
ii1D
,
ic1D
,
18
,
17
);
ui
+=
imageAtomicCompSwap
(
ui2D
,
ic2D
,
19u
,
value
);
ui
+=
imageAtomicCompSwap
(
ui2D
,
ic2D
,
19u
,
value
);
iv
.
x
+=
imageAtomicCompSwap
(
ii2DMS
,
ic2D
,
2
,
18
,
17
);
ui
+=
imageAtomicCompSwap
(
ui2DMSArray
,
ic3D
,
3
,
19u
,
value
);
imageStore
(
wo2D
,
ic2D
,
v
);
imageStore
(
wo2D
,
ic2D
,
v
);
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
d698ebf5
...
@@ -1897,7 +1897,8 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
...
@@ -1897,7 +1897,8 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
error
(
loc
,
"only supported on image with format r32f"
,
fnCandidate
.
getName
().
c_str
(),
""
);
error
(
loc
,
"only supported on image with format r32f"
,
fnCandidate
.
getName
().
c_str
(),
""
);
}
}
if
(
argp
->
size
()
>
4
)
{
const
size_t
maxArgs
=
imageType
.
getSampler
().
isMultiSample
()
?
5
:
4
;
if
(
argp
->
size
()
>
maxArgs
)
{
requireExtensions
(
loc
,
1
,
&
E_GL_KHR_memory_scope_semantics
,
fnCandidate
.
getName
().
c_str
());
requireExtensions
(
loc
,
1
,
&
E_GL_KHR_memory_scope_semantics
,
fnCandidate
.
getName
().
c_str
());
memorySemanticsCheck
(
loc
,
fnCandidate
,
callNode
);
memorySemanticsCheck
(
loc
,
fnCandidate
,
callNode
);
}
}
...
...
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