diff options
| author | 2020-04-24 01:44:14 -0300 | |
|---|---|---|
| committer | 2020-04-26 01:38:51 -0300 | |
| commit | ddd82ef42b7bb7bea4c80edeb96bca8512580df3 (patch) | |
| tree | b2b09f597fe519128d065f034d51103f478e6776 /src/video_core/shader/decode.cpp | |
| parent | Merge pull request #3768 from H27CK/cmd-title-fmt (diff) | |
| download | yuzu-ddd82ef42b7bb7bea4c80edeb96bca8512580df3.tar.gz yuzu-ddd82ef42b7bb7bea4c80edeb96bca8512580df3.tar.xz yuzu-ddd82ef42b7bb7bea4c80edeb96bca8512580df3.zip | |
shader/memory_util: Deduplicate code
Deduplicate code shared between vk_pipeline_cache and gl_shader_cache as
well as shader decoder code.
While we are at it, fix a bug in gl_shader_cache where compute shaders
had an start offset of a stage shader.
Diffstat (limited to 'src/video_core/shader/decode.cpp')
| -rw-r--r-- | src/video_core/shader/decode.cpp | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/src/video_core/shader/decode.cpp b/src/video_core/shader/decode.cpp index 87ac9ac6c..1167ff4ec 100644 --- a/src/video_core/shader/decode.cpp +++ b/src/video_core/shader/decode.cpp | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #include "video_core/engines/shader_bytecode.h" | 13 | #include "video_core/engines/shader_bytecode.h" |
| 14 | #include "video_core/engines/shader_header.h" | 14 | #include "video_core/engines/shader_header.h" |
| 15 | #include "video_core/shader/control_flow.h" | 15 | #include "video_core/shader/control_flow.h" |
| 16 | #include "video_core/shader/memory_util.h" | ||
| 16 | #include "video_core/shader/node_helper.h" | 17 | #include "video_core/shader/node_helper.h" |
| 17 | #include "video_core/shader/shader_ir.h" | 18 | #include "video_core/shader/shader_ir.h" |
| 18 | 19 | ||
| @@ -23,17 +24,6 @@ using Tegra::Shader::OpCode; | |||
| 23 | 24 | ||
| 24 | namespace { | 25 | namespace { |
| 25 | 26 | ||
| 26 | /** | ||
| 27 | * Returns whether the instruction at the specified offset is a 'sched' instruction. | ||
| 28 | * Sched instructions always appear before a sequence of 3 instructions. | ||
| 29 | */ | ||
| 30 | constexpr bool IsSchedInstruction(u32 offset, u32 main_offset) { | ||
| 31 | constexpr u32 SchedPeriod = 4; | ||
| 32 | u32 absolute_offset = offset - main_offset; | ||
| 33 | |||
| 34 | return (absolute_offset % SchedPeriod) == 0; | ||
| 35 | } | ||
| 36 | |||
| 37 | void DeduceTextureHandlerSize(VideoCore::GuestDriverProfile& gpu_driver, | 27 | void DeduceTextureHandlerSize(VideoCore::GuestDriverProfile& gpu_driver, |
| 38 | const std::list<Sampler>& used_samplers) { | 28 | const std::list<Sampler>& used_samplers) { |
| 39 | if (gpu_driver.IsTextureHandlerSizeKnown() || used_samplers.size() <= 1) { | 29 | if (gpu_driver.IsTextureHandlerSizeKnown() || used_samplers.size() <= 1) { |