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
Show 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
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 3
76
// Id's are bound by 3
95
Capability Shader
Capability StorageImageMultisample
...
...
@@ -19,7 +19,7 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
Capability StorageImageWriteWithoutFormat
1: ExtInstImport "GLSL.std.450"
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
Source GLSL 450
Name 4 "main"
...
...
@@ -43,9 +43,11 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
Name 232 "ii1D"
Name 245 "ui2D"
Name 248 "value"
Name 357 "wo2D"
Name 362 "fragData"
Name 375 "ic4D"
Name 357 "ii2DMS"
Name 367 "ui2DMSArray"
Name 376 "wo2D"
Name 381 "fragData"
Name 394 "ic4D"
Decorate 15(i1D) DescriptorSet 0
Decorate 15(i1D) Binding 0
Decorate 27(i2D) DescriptorSet 0
...
...
@@ -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) Binding 12
Decorate 248(value) Flat
Decorate 357(wo2D) DescriptorSet 0
Decorate 357(wo2D) Binding 1
Decorate 357(wo2D) NonReadable
Decorate 375(ic4D) Flat
Decorate 357(ii2DMS) DescriptorSet 0
Decorate 357(ii2DMS) Binding 13
Decorate 367(ui2DMSArray) DescriptorSet 0
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
3: TypeFunction 2
6: TypeInt 32 1
...
...
@@ -161,16 +167,22 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
340: 6(int) Constant 18
341: 6(int) Constant 17
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
357(wo2D): 356(ptr) Variable UniformConstant
361: TypePointer Output 125(fvec4)
362(fragData): 361(ptr) Variable Output
367: TypeBool
370: TypeVector 367(bool) 4
373: TypeVector 6(int) 4
374: TypePointer Input 373(ivec4)
375(ic4D): 374(ptr) Variable Input
357(ii2DMS): 356(ptr) Variable UniformConstant
365: TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
366: TypePointer UniformConstant 365
367(ui2DMSArray): 366(ptr) Variable UniformConstant
374: TypeImage 12(float) 2D nonsampled format:Unknown
375: TypePointer UniformConstant 374
376(wo2D): 375(ptr) Variable UniformConstant
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
5: Label
9(iv): 8(ptr) Variable Function
...
...
@@ -497,18 +509,33 @@ error: Capability ImageRect is not allowed by Vulkan 1.0 specification (or requi
353: 18(int) Load 229(ui)
354: 18(int) IAdd 353 352
Store 229(ui) 354
358: 355 Load 357(wo2D)
359: 29(ivec2) Load 142(ic2D)
360: 125(fvec4) Load 127(v)
ImageWrite 358 359 360
363: 18(int) Load 229(ui)
364: 20(ptr) AccessChain 9(iv) 237
365: 6(int) Load 364
366: 18(int) Bitcast 365
368: 367(bool) INotEqual 363 366
369: 125(fvec4) Load 127(v)
371: 370(bvec4) CompositeConstruct 368 368 368 368
372: 125(fvec4) Select 371 369 129
Store 362(fragData) 372
358: 29(ivec2) Load 142(ic2D)
359: 235(ptr) ImageTexelPointer 357(ii2DMS) 358 216
360: 6(int) AtomicCompareExchange 359 237 19 19 341 340
361: 20(ptr) AccessChain 9(iv) 19
362: 6(int) Load 361
363: 6(int) IAdd 362 360
364: 20(ptr) AccessChain 9(iv) 19
Store 364 363
368: 7(ivec3) Load 152(ic3D)
369: 18(int) Load 248(value)
370: 250(ptr) ImageTexelPointer 367(ui2DMSArray) 368 220
371: 18(int) AtomicCompareExchange 370 237 19 19 369 349
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
FunctionEnd
Test/spv.image.frag
View file @
d698ebf5
...
...
@@ -14,6 +14,8 @@ layout(rgba32f, binding = 10) uniform image2DMSArray i2DMSArray;
layout
(
r32i
,
binding
=
11
)
uniform
iimage1D
ii1D
;
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
ivec2
ic2D
;
...
...
@@ -85,6 +87,8 @@ void main()
ui
+=
imageAtomicExchange
(
ui2D
,
ic2D
,
value
);
iv
.
x
+=
imageAtomicCompSwap
(
ii1D
,
ic1D
,
18
,
17
);
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
);
...
...
glslang/MachineIndependent/ParseHelper.cpp
View file @
d698ebf5
...
...
@@ -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
(),
""
);
}
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
());
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