diff options
| author | 2021-04-05 04:03:12 +0200 | |
|---|---|---|
| committer | 2021-07-22 21:51:26 -0400 | |
| commit | dcaf0e91508562a70a49db7011ad09f13f811d71 (patch) | |
| tree | 9d3f48adc0a94c6a8b411a8e98c0e7a2d06b1d81 /src/shader_recompiler/ir_opt | |
| parent | shader: Implement indexed Position and ClipDistances (diff) | |
| download | yuzu-dcaf0e91508562a70a49db7011ad09f13f811d71.tar.gz yuzu-dcaf0e91508562a70a49db7011ad09f13f811d71.tar.xz yuzu-dcaf0e91508562a70a49db7011ad09f13f811d71.zip | |
shader: Address feedback
Diffstat (limited to 'src/shader_recompiler/ir_opt')
| -rw-r--r-- | src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp | 22 |
1 files changed, 9 insertions, 13 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 a14465598..1c03ee82a 100644 --- a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp +++ b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp | |||
| @@ -511,37 +511,33 @@ void Visit(Info& info, IR::Inst& inst) { | |||
| 511 | } | 511 | } |
| 512 | 512 | ||
| 513 | void GatherInfoFromHeader(Environment& env, Info& info) { | 513 | void GatherInfoFromHeader(Environment& env, Info& info) { |
| 514 | auto stage = env.ShaderStage(); | 514 | Stage stage{env.ShaderStage()}; |
| 515 | if (stage == Stage::Compute) { | 515 | if (stage == Stage::Compute) { |
| 516 | return; | 516 | return; |
| 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) { | 520 | if (!info.loads_indexed_attributes) { |
| 521 | return; | 521 | return; |
| 522 | } | 522 | } |
| 523 | for (size_t i = 0; i < info.input_generics.size(); i++) { | 523 | for (size_t i = 0; i < info.input_generics.size(); i++) { |
| 524 | info.input_generics[i].used = | 524 | info.input_generics[i].used |= header.ps.IsGenericVectorActive(i); |
| 525 | info.input_generics[i].used || header.ps.IsGenericVectorActive(i); | ||
| 526 | } | 525 | } |
| 527 | info.loads_position = info.loads_position || header.ps.imap_systemb.position != 0; | 526 | info.loads_position |= header.ps.imap_systemb.position != 0; |
| 528 | return; | 527 | return; |
| 529 | } | 528 | } |
| 530 | if (info.loads_indexed_attributes) { | 529 | if (info.loads_indexed_attributes) { |
| 531 | for (size_t i = 0; i < info.input_generics.size(); i++) { | 530 | for (size_t i = 0; i < info.input_generics.size(); i++) { |
| 532 | info.input_generics[i].used = | 531 | info.input_generics[i].used |= header.vtg.IsInputGenericVectorActive(i); |
| 533 | info.input_generics[i].used || header.vtg.IsInputGenericVectorActive(i); | ||
| 534 | } | 532 | } |
| 533 | info.loads_position |= header.vtg.imap_systemb.position != 0; | ||
| 535 | } | 534 | } |
| 536 | if (info.stores_indexed_attributes) { | 535 | if (info.stores_indexed_attributes) { |
| 537 | info.loads_position = info.loads_position || header.vtg.imap_systemb.position != 0; | ||
| 538 | for (size_t i = 0; i < info.stores_generics.size(); i++) { | 536 | for (size_t i = 0; i < info.stores_generics.size(); i++) { |
| 539 | info.stores_generics[i] = | 537 | info.stores_generics[i] |= header.vtg.IsOutputGenericVectorActive(i); |
| 540 | info.stores_generics[i] || header.vtg.IsOutputGenericVectorActive(i); | ||
| 541 | } | 538 | } |
| 542 | info.stores_clip_distance = | 539 | info.stores_clip_distance |= header.vtg.omap_systemc.clip_distances != 0; |
| 543 | info.stores_clip_distance || header.vtg.omap_systemc.clip_distances != 0; | 540 | info.stores_position |= header.vtg.omap_systemb.position != 0; |
| 544 | info.stores_position = info.stores_position || header.vtg.omap_systemb.position != 0; | ||
| 545 | } | 541 | } |
| 546 | } | 542 | } |
| 547 | 543 | ||