summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-09-25 21:46:34 -0300
committerGravatar FernandoS272019-10-25 09:01:31 -0400
commitec85648af3316d5e43c7b57fca55d0dad3d03f96 (patch)
treeb5cc21e8b027a27e69c8197202f98d0c36706978 /src/video_core/engines
parentconst_buffer_locker: Minor style changes (diff)
downloadyuzu-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.h35
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};
104static_assert(std::is_trivially_copyable_v<SamplerDescriptor>);
108 105
109class ConstBufferEngineInterface { 106class ConstBufferEngineInterface {
110public: 107public: