diff options
Diffstat (limited to 'src/shader_recompiler/ir_opt')
| -rw-r--r-- | src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp index dbe9f1f40..a14465598 100644 --- a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp +++ b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp | |||
| @@ -517,22 +517,32 @@ void GatherInfoFromHeader(Environment& env, Info& info) { | |||
| 517 | } | 517 | } |
| 518 | const auto& header = env.SPH(); | 518 | const auto& header = env.SPH(); |
| 519 | if (stage == Stage::Fragment) { | 519 | if (stage == Stage::Fragment) { |
| 520 | if (!info.loads_indexed_attributes) { | ||
| 521 | return; | ||
| 522 | } | ||
| 520 | for (size_t i = 0; i < info.input_generics.size(); i++) { | 523 | for (size_t i = 0; i < info.input_generics.size(); i++) { |
| 521 | info.input_generics[i].used = | 524 | info.input_generics[i].used = |
| 522 | info.input_generics[i].used || header.ps.IsGenericVectorActive(i); | 525 | info.input_generics[i].used || header.ps.IsGenericVectorActive(i); |
| 523 | } | 526 | } |
| 527 | info.loads_position = info.loads_position || header.ps.imap_systemb.position != 0; | ||
| 524 | return; | 528 | return; |
| 525 | } | 529 | } |
| 526 | for (size_t i = 0; i < info.input_generics.size(); i++) { | 530 | if (info.loads_indexed_attributes) { |
| 527 | info.input_generics[i].used = | 531 | for (size_t i = 0; i < info.input_generics.size(); i++) { |
| 528 | info.input_generics[i].used || header.vtg.IsInputGenericVectorActive(i); | 532 | info.input_generics[i].used = |
| 533 | info.input_generics[i].used || header.vtg.IsInputGenericVectorActive(i); | ||
| 534 | } | ||
| 529 | } | 535 | } |
| 530 | for (size_t i = 0; i < info.stores_generics.size(); i++) { | 536 | if (info.stores_indexed_attributes) { |
| 531 | info.stores_generics[i] = | 537 | info.loads_position = info.loads_position || header.vtg.imap_systemb.position != 0; |
| 532 | info.stores_generics[i] || header.vtg.IsOutputGenericVectorActive(i); | 538 | for (size_t i = 0; i < info.stores_generics.size(); i++) { |
| 539 | info.stores_generics[i] = | ||
| 540 | info.stores_generics[i] || header.vtg.IsOutputGenericVectorActive(i); | ||
| 541 | } | ||
| 542 | info.stores_clip_distance = | ||
| 543 | info.stores_clip_distance || header.vtg.omap_systemc.clip_distances != 0; | ||
| 544 | info.stores_position = info.stores_position || header.vtg.omap_systemb.position != 0; | ||
| 533 | } | 545 | } |
| 534 | info.stores_clip_distance = | ||
| 535 | info.stores_clip_distance || header.vtg.omap_systemc.clip_distances != 0; | ||
| 536 | } | 546 | } |
| 537 | 547 | ||
| 538 | } // Anonymous namespace | 548 | } // Anonymous namespace |