diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-24 06:58:44 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-24 06:59:32 +0200 |
commit | 0b6df52109bc3d3d9161732131ffa29e6a51d976 (patch) | |
tree | 3ee4675711a28b897f522fa22ed93202db182493 | |
parent | gl_shader_decompiler: Address feedback (diff) | |
download | yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar.gz yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar.bz2 yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar.lz yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar.xz yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.tar.zst yuzu-0b6df52109bc3d3d9161732131ffa29e6a51d976.zip |
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_disk_cache.cpp | 7 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_disk_cache.h | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp index 922c72590..10688397b 100644 --- a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp @@ -285,18 +285,20 @@ std::optional<ShaderDiskCacheDecompiled> ShaderDiskCacheOpenGL::LoadDecompiledEn if (!LoadObjectFromPrecompiled(code_size)) { return {}; } - std::vector<u8> code(code_size); + + std::string code(code_size, '\0'); if (!LoadArrayFromPrecompiled(code.data(), code.size())) { return {}; } ShaderDiskCacheDecompiled entry; - entry.code = std::string(reinterpret_cast<const char*>(code.data()), code_size); + entry.code = std::move(code); u32 const_buffers_count{}; if (!LoadObjectFromPrecompiled(const_buffers_count)) { return {}; } + for (u32 i = 0; i < const_buffers_count; ++i) { u32 max_offset{}; u32 index{}; @@ -312,6 +314,7 @@ std::optional<ShaderDiskCacheDecompiled> ShaderDiskCacheOpenGL::LoadDecompiledEn if (!LoadObjectFromPrecompiled(samplers_count)) { return {}; } + for (u32 i = 0; i < samplers_count; ++i) { u64 offset{}; u64 index{}; diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.h b/src/video_core/renderer_opengl/gl_shader_disk_cache.h index aa12ffc71..4f296dda6 100644 --- a/src/video_core/renderer_opengl/gl_shader_disk_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.h @@ -4,6 +4,7 @@ #pragma once +#include <bitset> #include <optional> #include <string> #include <tuple> @@ -93,7 +94,7 @@ namespace std { template <> struct hash<OpenGL::BaseBindings> { - std::size_t operator()(const OpenGL::BaseBindings& bindings) const { + std::size_t operator()(const OpenGL::BaseBindings& bindings) const noexcept { return static_cast<std::size_t>(bindings.cbuf) ^ (static_cast<std::size_t>(bindings.gmem) << 8) ^ (static_cast<std::size_t>(bindings.sampler) << 16) ^ @@ -103,7 +104,7 @@ struct hash<OpenGL::BaseBindings> { template <> struct hash<OpenGL::ProgramVariant> { - std::size_t operator()(const OpenGL::ProgramVariant& variant) const { + std::size_t operator()(const OpenGL::ProgramVariant& variant) const noexcept { return std::hash<OpenGL::BaseBindings>()(variant.base_bindings) ^ std::hash<OpenGL::TextureBufferUsage>()(variant.texture_buffer_usage) ^ (static_cast<std::size_t>(variant.primitive_mode) << 6); |