@@ -571,9 +571,11 @@ TEST_F(DxilModuleTest, PayloadQualifier) {
571
571
" {\n "
572
572
" double a : read(caller, closesthit, anyhit) : "
573
573
" write(caller, miss, closesthit);\n "
574
+ " int b : read(caller) : write(miss);\n "
574
575
" };\n\n "
575
576
" [shader(\" miss\" )]\n "
576
- " void Miss( inout Payload payload ) { payload.a = 4.2; }\n " ;
577
+ " void Miss( inout Payload payload ) { payload.a = 4.2; "
578
+ " payload.b = 1; }\n " ;
577
579
578
580
c.Compile (shader, L" lib_6_6" , arguments, {});
579
581
@@ -582,9 +584,9 @@ TEST_F(DxilModuleTest, PayloadQualifier) {
582
584
583
585
for (auto &p : DTS.GetPayloadAnnotationMap ()) {
584
586
const DxilPayloadAnnotation &plAnnotation = *p.second ;
585
- for ( unsigned i = 0 ; i < plAnnotation. GetNumFields (); ++i) {
587
+ {
586
588
const DxilPayloadFieldAnnotation &fieldAnnotation =
587
- plAnnotation.GetFieldAnnotation (i );
589
+ plAnnotation.GetFieldAnnotation (0 );
588
590
VERIFY_IS_TRUE (fieldAnnotation.HasAnnotations ());
589
591
VERIFY_ARE_EQUAL (DXIL::PayloadAccessQualifier::ReadWrite,
590
592
fieldAnnotation.GetPayloadFieldQualifier (
@@ -599,6 +601,23 @@ TEST_F(DxilModuleTest, PayloadQualifier) {
599
601
fieldAnnotation.GetPayloadFieldQualifier (
600
602
DXIL::PayloadAccessShaderStage::Anyhit));
601
603
}
604
+ {
605
+ const DxilPayloadFieldAnnotation &fieldAnnotation =
606
+ plAnnotation.GetFieldAnnotation (1 );
607
+ VERIFY_IS_TRUE (fieldAnnotation.HasAnnotations ());
608
+ VERIFY_ARE_EQUAL (DXIL::PayloadAccessQualifier::Read,
609
+ fieldAnnotation.GetPayloadFieldQualifier (
610
+ DXIL::PayloadAccessShaderStage::Caller));
611
+ VERIFY_ARE_EQUAL (DXIL::PayloadAccessQualifier::NoAccess,
612
+ fieldAnnotation.GetPayloadFieldQualifier (
613
+ DXIL::PayloadAccessShaderStage::Closesthit));
614
+ VERIFY_ARE_EQUAL (DXIL::PayloadAccessQualifier::Write,
615
+ fieldAnnotation.GetPayloadFieldQualifier (
616
+ DXIL::PayloadAccessShaderStage::Miss));
617
+ VERIFY_ARE_EQUAL (DXIL::PayloadAccessQualifier::NoAccess,
618
+ fieldAnnotation.GetPayloadFieldQualifier (
619
+ DXIL::PayloadAccessShaderStage::Anyhit));
620
+ }
602
621
}
603
622
}
604
623
0 commit comments