diff options
| author | 2019-09-25 21:46:34 -0300 | |
|---|---|---|
| committer | 2019-10-25 09:01:31 -0400 | |
| commit | ec85648af3316d5e43c7b57fca55d0dad3d03f96 (patch) | |
| tree | b5cc21e8b027a27e69c8197202f98d0c36706978 /src/video_core/engines | |
| parent | const_buffer_locker: Minor style changes (diff) | |
| download | yuzu-ec85648af3316d5e43c7b57fca55d0dad3d03f96.tar.gz yuzu-ec85648af3316d5e43c7b57fca55d0dad3d03f96.tar.xz yuzu-ec85648af3316d5e43c7b57fca55d0dad3d03f96.zip | |
gl_shader_disk_cache: Store and load fast BRX
Diffstat (limited to 'src/video_core/engines')
| -rw-r--r-- | src/video_core/engines/const_buffer_engine_interface.h | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/video_core/engines/const_buffer_engine_interface.h b/src/video_core/engines/const_buffer_engine_interface.h index c0e3a3a17..80f470777 100644 --- a/src/video_core/engines/const_buffer_engine_interface.h +++ b/src/video_core/engines/const_buffer_engine_interface.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <type_traits> | ||
| 7 | #include "common/bit_field.h" | 8 | #include "common/bit_field.h" |
| 8 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 9 | #include "video_core/engines/shader_bytecode.h" | 10 | #include "video_core/engines/shader_bytecode.h" |
| @@ -29,51 +30,49 @@ struct SamplerDescriptor { | |||
| 29 | u32 raw{}; | 30 | u32 raw{}; |
| 30 | }; | 31 | }; |
| 31 | 32 | ||
| 33 | bool operator==(const SamplerDescriptor& rhs) const noexcept { | ||
| 34 | return raw == rhs.raw; | ||
| 35 | } | ||
| 36 | |||
| 32 | static SamplerDescriptor FromTicTexture(Tegra::Texture::TextureType tic_texture_type) { | 37 | static SamplerDescriptor FromTicTexture(Tegra::Texture::TextureType tic_texture_type) { |
| 33 | SamplerDescriptor result{}; | 38 | SamplerDescriptor result; |
| 34 | switch (tic_texture_type) { | 39 | switch (tic_texture_type) { |
| 35 | case Tegra::Texture::TextureType::Texture1D: { | 40 | case Tegra::Texture::TextureType::Texture1D: |
| 36 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); | 41 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); |
| 37 | result.is_array.Assign(0); | 42 | result.is_array.Assign(0); |
| 38 | result.is_buffer.Assign(0); | 43 | result.is_buffer.Assign(0); |
| 39 | result.is_shadow.Assign(0); | 44 | result.is_shadow.Assign(0); |
| 40 | return result; | 45 | return result; |
| 41 | } | 46 | case Tegra::Texture::TextureType::Texture2D: |
| 42 | case Tegra::Texture::TextureType::Texture2D: { | ||
| 43 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); | 47 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); |
| 44 | result.is_array.Assign(0); | 48 | result.is_array.Assign(0); |
| 45 | result.is_buffer.Assign(0); | 49 | result.is_buffer.Assign(0); |
| 46 | result.is_shadow.Assign(0); | 50 | result.is_shadow.Assign(0); |
| 47 | return result; | 51 | return result; |
| 48 | } | 52 | case Tegra::Texture::TextureType::Texture3D: |
| 49 | case Tegra::Texture::TextureType::Texture3D: { | ||
| 50 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture3D); | 53 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture3D); |
| 51 | result.is_array.Assign(0); | 54 | result.is_array.Assign(0); |
| 52 | result.is_buffer.Assign(0); | 55 | result.is_buffer.Assign(0); |
| 53 | result.is_shadow.Assign(0); | 56 | result.is_shadow.Assign(0); |
| 54 | return result; | 57 | return result; |
| 55 | } | 58 | case Tegra::Texture::TextureType::TextureCubemap: |
| 56 | case Tegra::Texture::TextureType::TextureCubemap: { | ||
| 57 | result.texture_type.Assign(Tegra::Shader::TextureType::TextureCube); | 59 | result.texture_type.Assign(Tegra::Shader::TextureType::TextureCube); |
| 58 | result.is_array.Assign(0); | 60 | result.is_array.Assign(0); |
| 59 | result.is_buffer.Assign(0); | 61 | result.is_buffer.Assign(0); |
| 60 | result.is_shadow.Assign(0); | 62 | result.is_shadow.Assign(0); |
| 61 | return result; | 63 | return result; |
| 62 | } | 64 | case Tegra::Texture::TextureType::Texture1DArray: |
| 63 | case Tegra::Texture::TextureType::Texture1DArray: { | ||
| 64 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); | 65 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); |
| 65 | result.is_array.Assign(1); | 66 | result.is_array.Assign(1); |
| 66 | result.is_buffer.Assign(0); | 67 | result.is_buffer.Assign(0); |
| 67 | result.is_shadow.Assign(0); | 68 | result.is_shadow.Assign(0); |
| 68 | return result; | 69 | return result; |
| 69 | } | 70 | case Tegra::Texture::TextureType::Texture2DArray: |
| 70 | case Tegra::Texture::TextureType::Texture2DArray: { | ||
| 71 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); | 71 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); |
| 72 | result.is_array.Assign(1); | 72 | result.is_array.Assign(1); |
| 73 | result.is_buffer.Assign(0); | 73 | result.is_buffer.Assign(0); |
| 74 | result.is_shadow.Assign(0); | 74 | result.is_shadow.Assign(0); |
| 75 | return result; | 75 | return result; |
| 76 | } | ||
| 77 | case Tegra::Texture::TextureType::Texture1DBuffer: { | 76 | case Tegra::Texture::TextureType::Texture1DBuffer: { |
| 78 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); | 77 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture1D); |
| 79 | result.is_array.Assign(0); | 78 | result.is_array.Assign(0); |
| @@ -81,30 +80,28 @@ struct SamplerDescriptor { | |||
| 81 | result.is_shadow.Assign(0); | 80 | result.is_shadow.Assign(0); |
| 82 | return result; | 81 | return result; |
| 83 | } | 82 | } |
| 84 | case Tegra::Texture::TextureType::Texture2DNoMipmap: { | 83 | case Tegra::Texture::TextureType::Texture2DNoMipmap: |
| 85 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); | 84 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); |
| 86 | result.is_array.Assign(0); | 85 | result.is_array.Assign(0); |
| 87 | result.is_buffer.Assign(0); | 86 | result.is_buffer.Assign(0); |
| 88 | result.is_shadow.Assign(0); | 87 | result.is_shadow.Assign(0); |
| 89 | return result; | 88 | return result; |
| 90 | } | 89 | case Tegra::Texture::TextureType::TextureCubeArray: |
| 91 | case Tegra::Texture::TextureType::TextureCubeArray: { | ||
| 92 | result.texture_type.Assign(Tegra::Shader::TextureType::TextureCube); | 90 | result.texture_type.Assign(Tegra::Shader::TextureType::TextureCube); |
| 93 | result.is_array.Assign(1); | 91 | result.is_array.Assign(1); |
| 94 | result.is_buffer.Assign(0); | 92 | result.is_buffer.Assign(0); |
| 95 | result.is_shadow.Assign(0); | 93 | result.is_shadow.Assign(0); |
| 96 | return result; | 94 | return result; |
| 97 | } | 95 | default: |
| 98 | default: { | ||
| 99 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); | 96 | result.texture_type.Assign(Tegra::Shader::TextureType::Texture2D); |
| 100 | result.is_array.Assign(0); | 97 | result.is_array.Assign(0); |
| 101 | result.is_buffer.Assign(0); | 98 | result.is_buffer.Assign(0); |
| 102 | result.is_shadow.Assign(0); | 99 | result.is_shadow.Assign(0); |
| 103 | return result; | 100 | return result; |
| 104 | } | 101 | } |
| 105 | } | ||
| 106 | } | 102 | } |
| 107 | }; | 103 | }; |
| 104 | static_assert(std::is_trivially_copyable_v<SamplerDescriptor>); | ||
| 108 | 105 | ||
| 109 | class ConstBufferEngineInterface { | 106 | class ConstBufferEngineInterface { |
| 110 | public: | 107 | public: |