Generate separate stores for partially swizzled memory stores
Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to. Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector. While this change generates more SPIR-V instructions, it is necessary for correctness. Fixes #2518.
This commit is contained in:
parent
9158061398
commit
6d5b40f051
50 changed files with 31343 additions and 26594 deletions
|
|
@ -2,7 +2,7 @@ spv.float16.frag
|
|||
Validation failed
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 534
|
||||
// Id's are bound by 542
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
|
|
@ -80,87 +80,87 @@ Validation failed
|
|||
Name 445 "f16v2"
|
||||
Name 463 "f16v"
|
||||
Name 465 "if16v"
|
||||
Name 514 "S"
|
||||
MemberName 514(S) 0 "x"
|
||||
MemberName 514(S) 1 "y"
|
||||
MemberName 514(S) 2 "z"
|
||||
Name 516 "B1"
|
||||
MemberName 516(B1) 0 "a"
|
||||
MemberName 516(B1) 1 "b"
|
||||
MemberName 516(B1) 2 "c"
|
||||
MemberName 516(B1) 3 "d"
|
||||
MemberName 516(B1) 4 "e"
|
||||
MemberName 516(B1) 5 "f"
|
||||
MemberName 516(B1) 6 "g"
|
||||
MemberName 516(B1) 7 "h"
|
||||
Name 518 ""
|
||||
Name 521 "S"
|
||||
MemberName 521(S) 0 "x"
|
||||
MemberName 521(S) 1 "y"
|
||||
MemberName 521(S) 2 "z"
|
||||
Name 523 "B2"
|
||||
MemberName 523(B2) 0 "o"
|
||||
MemberName 523(B2) 1 "p"
|
||||
MemberName 523(B2) 2 "q"
|
||||
MemberName 523(B2) 3 "r"
|
||||
MemberName 523(B2) 4 "s"
|
||||
MemberName 523(B2) 5 "t"
|
||||
MemberName 523(B2) 6 "u"
|
||||
MemberName 523(B2) 7 "v"
|
||||
Name 525 ""
|
||||
Name 526 "sf16"
|
||||
Name 527 "sf"
|
||||
Name 528 "sd"
|
||||
Name 529 "f16_to_f"
|
||||
Name 531 "f16_to_d"
|
||||
Name 532 "f_to_f16"
|
||||
Name 533 "d_to_f16"
|
||||
Name 522 "S"
|
||||
MemberName 522(S) 0 "x"
|
||||
MemberName 522(S) 1 "y"
|
||||
MemberName 522(S) 2 "z"
|
||||
Name 524 "B1"
|
||||
MemberName 524(B1) 0 "a"
|
||||
MemberName 524(B1) 1 "b"
|
||||
MemberName 524(B1) 2 "c"
|
||||
MemberName 524(B1) 3 "d"
|
||||
MemberName 524(B1) 4 "e"
|
||||
MemberName 524(B1) 5 "f"
|
||||
MemberName 524(B1) 6 "g"
|
||||
MemberName 524(B1) 7 "h"
|
||||
Name 526 ""
|
||||
Name 529 "S"
|
||||
MemberName 529(S) 0 "x"
|
||||
MemberName 529(S) 1 "y"
|
||||
MemberName 529(S) 2 "z"
|
||||
Name 531 "B2"
|
||||
MemberName 531(B2) 0 "o"
|
||||
MemberName 531(B2) 1 "p"
|
||||
MemberName 531(B2) 2 "q"
|
||||
MemberName 531(B2) 3 "r"
|
||||
MemberName 531(B2) 4 "s"
|
||||
MemberName 531(B2) 5 "t"
|
||||
MemberName 531(B2) 6 "u"
|
||||
MemberName 531(B2) 7 "v"
|
||||
Name 533 ""
|
||||
Name 534 "sf16"
|
||||
Name 535 "sf"
|
||||
Name 536 "sd"
|
||||
Name 537 "f16_to_f"
|
||||
Name 539 "f16_to_d"
|
||||
Name 540 "f_to_f16"
|
||||
Name 541 "d_to_f16"
|
||||
Decorate 465(if16v) Location 0
|
||||
Decorate 512 ArrayStride 16
|
||||
Decorate 513 ArrayStride 32
|
||||
MemberDecorate 514(S) 0 Offset 0
|
||||
MemberDecorate 514(S) 1 Offset 4
|
||||
MemberDecorate 514(S) 2 Offset 8
|
||||
Decorate 515 ArrayStride 16
|
||||
MemberDecorate 516(B1) 0 Offset 0
|
||||
MemberDecorate 516(B1) 1 Offset 4
|
||||
MemberDecorate 516(B1) 2 Offset 8
|
||||
MemberDecorate 516(B1) 3 Offset 16
|
||||
MemberDecorate 516(B1) 4 ColMajor
|
||||
MemberDecorate 516(B1) 4 Offset 48
|
||||
MemberDecorate 516(B1) 4 MatrixStride 16
|
||||
MemberDecorate 516(B1) 5 ColMajor
|
||||
MemberDecorate 516(B1) 5 Offset 80
|
||||
MemberDecorate 516(B1) 5 MatrixStride 16
|
||||
MemberDecorate 516(B1) 6 Offset 144
|
||||
MemberDecorate 516(B1) 7 Offset 160
|
||||
Decorate 516(B1) Block
|
||||
Decorate 518 DescriptorSet 0
|
||||
Decorate 518 Binding 0
|
||||
Decorate 519 ArrayStride 2
|
||||
Decorate 520 ArrayStride 12
|
||||
MemberDecorate 521(S) 0 Offset 0
|
||||
MemberDecorate 521(S) 1 Offset 4
|
||||
MemberDecorate 521(S) 2 Offset 8
|
||||
Decorate 522 ArrayStride 16
|
||||
MemberDecorate 523(B2) 0 Offset 0
|
||||
MemberDecorate 523(B2) 1 Offset 4
|
||||
MemberDecorate 523(B2) 2 Offset 8
|
||||
MemberDecorate 523(B2) 3 Offset 14
|
||||
MemberDecorate 523(B2) 4 RowMajor
|
||||
MemberDecorate 523(B2) 4 Offset 20
|
||||
MemberDecorate 523(B2) 4 MatrixStride 4
|
||||
MemberDecorate 523(B2) 5 RowMajor
|
||||
MemberDecorate 523(B2) 5 Offset 32
|
||||
MemberDecorate 523(B2) 5 MatrixStride 4
|
||||
MemberDecorate 523(B2) 6 Offset 56
|
||||
MemberDecorate 523(B2) 7 Offset 72
|
||||
Decorate 523(B2) BufferBlock
|
||||
Decorate 525 DescriptorSet 0
|
||||
Decorate 525 Binding 0
|
||||
Decorate 526(sf16) SpecId 100
|
||||
Decorate 527(sf) SpecId 101
|
||||
Decorate 528(sd) SpecId 102
|
||||
Decorate 520 ArrayStride 16
|
||||
Decorate 521 ArrayStride 32
|
||||
MemberDecorate 522(S) 0 Offset 0
|
||||
MemberDecorate 522(S) 1 Offset 4
|
||||
MemberDecorate 522(S) 2 Offset 8
|
||||
Decorate 523 ArrayStride 16
|
||||
MemberDecorate 524(B1) 0 Offset 0
|
||||
MemberDecorate 524(B1) 1 Offset 4
|
||||
MemberDecorate 524(B1) 2 Offset 8
|
||||
MemberDecorate 524(B1) 3 Offset 16
|
||||
MemberDecorate 524(B1) 4 ColMajor
|
||||
MemberDecorate 524(B1) 4 Offset 48
|
||||
MemberDecorate 524(B1) 4 MatrixStride 16
|
||||
MemberDecorate 524(B1) 5 ColMajor
|
||||
MemberDecorate 524(B1) 5 Offset 80
|
||||
MemberDecorate 524(B1) 5 MatrixStride 16
|
||||
MemberDecorate 524(B1) 6 Offset 144
|
||||
MemberDecorate 524(B1) 7 Offset 160
|
||||
Decorate 524(B1) Block
|
||||
Decorate 526 DescriptorSet 0
|
||||
Decorate 526 Binding 0
|
||||
Decorate 527 ArrayStride 2
|
||||
Decorate 528 ArrayStride 12
|
||||
MemberDecorate 529(S) 0 Offset 0
|
||||
MemberDecorate 529(S) 1 Offset 4
|
||||
MemberDecorate 529(S) 2 Offset 8
|
||||
Decorate 530 ArrayStride 16
|
||||
MemberDecorate 531(B2) 0 Offset 0
|
||||
MemberDecorate 531(B2) 1 Offset 4
|
||||
MemberDecorate 531(B2) 2 Offset 8
|
||||
MemberDecorate 531(B2) 3 Offset 14
|
||||
MemberDecorate 531(B2) 4 RowMajor
|
||||
MemberDecorate 531(B2) 4 Offset 20
|
||||
MemberDecorate 531(B2) 4 MatrixStride 4
|
||||
MemberDecorate 531(B2) 5 RowMajor
|
||||
MemberDecorate 531(B2) 5 Offset 32
|
||||
MemberDecorate 531(B2) 5 MatrixStride 4
|
||||
MemberDecorate 531(B2) 6 Offset 56
|
||||
MemberDecorate 531(B2) 7 Offset 72
|
||||
Decorate 531(B2) BufferBlock
|
||||
Decorate 533 DescriptorSet 0
|
||||
Decorate 533 Binding 0
|
||||
Decorate 534(sf16) SpecId 100
|
||||
Decorate 535(sf) SpecId 101
|
||||
Decorate 536(sd) SpecId 102
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
28: TypeFloat 16
|
||||
|
|
@ -218,32 +218,32 @@ Validation failed
|
|||
464: TypePointer Input 151(f16vec3)
|
||||
465(if16v): 464(ptr) Variable Input
|
||||
466: TypePointer Input 28(float16_t)
|
||||
503: 183(int) Constant 1
|
||||
508:28(float16_t) Constant 14336
|
||||
509: 29(f16vec2) ConstantComposite 508 508
|
||||
511: 33(int) Constant 2
|
||||
512: TypeArray 28(float16_t) 511
|
||||
513: TypeArray 406 511
|
||||
514(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
|
||||
515: TypeArray 514(S) 511
|
||||
516(B1): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 512 406 513 514(S) 515
|
||||
517: TypePointer Uniform 516(B1)
|
||||
518: 517(ptr) Variable Uniform
|
||||
519: TypeArray 28(float16_t) 511
|
||||
520: TypeArray 406 511
|
||||
521(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
|
||||
522: TypeArray 521(S) 511
|
||||
523(B2): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 519 406 520 521(S) 522
|
||||
524: TypePointer Uniform 523(B2)
|
||||
525: 524(ptr) Variable Uniform
|
||||
526(sf16):28(float16_t) SpecConstant 12288
|
||||
527(sf): 164(float) SpecConstant 1048576000
|
||||
528(sd):172(float64_t) SpecConstant 0 1071644672
|
||||
529(f16_to_f): 164(float) SpecConstantOp 115 526(sf16)
|
||||
530: 164(float) SpecConstantOp 115 526(sf16)
|
||||
531(f16_to_d):172(float64_t) SpecConstantOp 115 530
|
||||
532(f_to_f16):28(float16_t) SpecConstantOp 115 527(sf)
|
||||
533(d_to_f16):28(float16_t) SpecConstantOp 115 528(sd)
|
||||
509: 183(int) Constant 1
|
||||
516:28(float16_t) Constant 14336
|
||||
517: 29(f16vec2) ConstantComposite 516 516
|
||||
519: 33(int) Constant 2
|
||||
520: TypeArray 28(float16_t) 519
|
||||
521: TypeArray 406 519
|
||||
522(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
|
||||
523: TypeArray 522(S) 519
|
||||
524(B1): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 520 406 521 522(S) 523
|
||||
525: TypePointer Uniform 524(B1)
|
||||
526: 525(ptr) Variable Uniform
|
||||
527: TypeArray 28(float16_t) 519
|
||||
528: TypeArray 406 519
|
||||
529(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
|
||||
530: TypeArray 529(S) 519
|
||||
531(B2): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 527 406 528 529(S) 530
|
||||
532: TypePointer Uniform 531(B2)
|
||||
533: 532(ptr) Variable Uniform
|
||||
534(sf16):28(float16_t) SpecConstant 12288
|
||||
535(sf): 164(float) SpecConstant 1048576000
|
||||
536(sd):172(float64_t) SpecConstant 0 1071644672
|
||||
537(f16_to_f): 164(float) SpecConstantOp 115 534(sf16)
|
||||
538: 164(float) SpecConstantOp 115 534(sf16)
|
||||
539(f16_to_d):172(float64_t) SpecConstantOp 115 538
|
||||
540(f_to_f16):28(float16_t) SpecConstantOp 115 535(sf)
|
||||
541(d_to_f16):28(float16_t) SpecConstantOp 115 536(sd)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
|
|
@ -801,45 +801,57 @@ Validation failed
|
|||
475:151(f16vec3) Load 465(if16v)
|
||||
476: 29(f16vec2) VectorShuffle 475 475 0 1
|
||||
477: 29(f16vec2) DPdxFine 476
|
||||
478:151(f16vec3) Load 463(f16v)
|
||||
479:151(f16vec3) VectorShuffle 478 477 3 4 2
|
||||
Store 463(f16v) 479
|
||||
480:151(f16vec3) Load 465(if16v)
|
||||
481: 29(f16vec2) VectorShuffle 480 480 0 1
|
||||
482: 29(f16vec2) DPdyFine 481
|
||||
483:151(f16vec3) Load 463(f16v)
|
||||
484:151(f16vec3) VectorShuffle 483 482 3 4 2
|
||||
Store 463(f16v) 484
|
||||
485:151(f16vec3) Load 465(if16v)
|
||||
486:151(f16vec3) DPdxCoarse 485
|
||||
Store 463(f16v) 486
|
||||
487:151(f16vec3) Load 465(if16v)
|
||||
488:151(f16vec3) DPdxCoarse 487
|
||||
Store 463(f16v) 488
|
||||
489: 466(ptr) AccessChain 465(if16v) 34
|
||||
490:28(float16_t) Load 489
|
||||
491:28(float16_t) Fwidth 490
|
||||
492: 35(ptr) AccessChain 463(f16v) 34
|
||||
Store 492 491
|
||||
493:151(f16vec3) Load 465(if16v)
|
||||
494: 29(f16vec2) VectorShuffle 493 493 0 1
|
||||
495: 29(f16vec2) FwidthFine 494
|
||||
496:151(f16vec3) Load 463(f16v)
|
||||
497:151(f16vec3) VectorShuffle 496 495 3 4 2
|
||||
Store 463(f16v) 497
|
||||
498:151(f16vec3) Load 465(if16v)
|
||||
499:151(f16vec3) FwidthCoarse 498
|
||||
Store 463(f16v) 499
|
||||
500: 466(ptr) AccessChain 465(if16v) 34
|
||||
501:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500
|
||||
502: 35(ptr) AccessChain 463(f16v) 34
|
||||
Store 502 501
|
||||
504:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503
|
||||
505: 29(f16vec2) VectorShuffle 504 504 0 1
|
||||
506:151(f16vec3) Load 463(f16v)
|
||||
507:151(f16vec3) VectorShuffle 506 505 3 4 2
|
||||
Store 463(f16v) 507
|
||||
510:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509
|
||||
Store 463(f16v) 510
|
||||
478: 35(ptr) AccessChain 463(f16v) 34
|
||||
479:28(float16_t) CompositeExtract 477 0
|
||||
Store 478 479
|
||||
480: 35(ptr) AccessChain 463(f16v) 90
|
||||
481:28(float16_t) CompositeExtract 477 1
|
||||
Store 480 481
|
||||
482:151(f16vec3) Load 465(if16v)
|
||||
483: 29(f16vec2) VectorShuffle 482 482 0 1
|
||||
484: 29(f16vec2) DPdyFine 483
|
||||
485: 35(ptr) AccessChain 463(f16v) 34
|
||||
486:28(float16_t) CompositeExtract 484 0
|
||||
Store 485 486
|
||||
487: 35(ptr) AccessChain 463(f16v) 90
|
||||
488:28(float16_t) CompositeExtract 484 1
|
||||
Store 487 488
|
||||
489:151(f16vec3) Load 465(if16v)
|
||||
490:151(f16vec3) DPdxCoarse 489
|
||||
Store 463(f16v) 490
|
||||
491:151(f16vec3) Load 465(if16v)
|
||||
492:151(f16vec3) DPdxCoarse 491
|
||||
Store 463(f16v) 492
|
||||
493: 466(ptr) AccessChain 465(if16v) 34
|
||||
494:28(float16_t) Load 493
|
||||
495:28(float16_t) Fwidth 494
|
||||
496: 35(ptr) AccessChain 463(f16v) 34
|
||||
Store 496 495
|
||||
497:151(f16vec3) Load 465(if16v)
|
||||
498: 29(f16vec2) VectorShuffle 497 497 0 1
|
||||
499: 29(f16vec2) FwidthFine 498
|
||||
500: 35(ptr) AccessChain 463(f16v) 34
|
||||
501:28(float16_t) CompositeExtract 499 0
|
||||
Store 500 501
|
||||
502: 35(ptr) AccessChain 463(f16v) 90
|
||||
503:28(float16_t) CompositeExtract 499 1
|
||||
Store 502 503
|
||||
504:151(f16vec3) Load 465(if16v)
|
||||
505:151(f16vec3) FwidthCoarse 504
|
||||
Store 463(f16v) 505
|
||||
506: 466(ptr) AccessChain 465(if16v) 34
|
||||
507:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 506
|
||||
508: 35(ptr) AccessChain 463(f16v) 34
|
||||
Store 508 507
|
||||
510:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 509
|
||||
511: 29(f16vec2) VectorShuffle 510 510 0 1
|
||||
512: 35(ptr) AccessChain 463(f16v) 34
|
||||
513:28(float16_t) CompositeExtract 511 0
|
||||
Store 512 513
|
||||
514: 35(ptr) AccessChain 463(f16v) 90
|
||||
515:28(float16_t) CompositeExtract 511 1
|
||||
Store 514 515
|
||||
518:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 517
|
||||
Store 463(f16v) 518
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue