diff options
| -rw-r--r-- | src/core/core.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/service/sm/controller.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/sm/controller.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/sm/sm.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/service/sm/sm.h | 1 | ||||
| -rw-r--r-- | src/video_core/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.h | 12 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.cpp | 1 |
11 files changed, 24 insertions, 15 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index cbab80881..bf39ad689 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -24,7 +24,6 @@ | |||
| 24 | #include "core/hle/kernel/scheduler.h" | 24 | #include "core/hle/kernel/scheduler.h" |
| 25 | #include "core/hle/kernel/thread.h" | 25 | #include "core/hle/kernel/thread.h" |
| 26 | #include "core/hle/service/service.h" | 26 | #include "core/hle/service/service.h" |
| 27 | #include "core/hle/service/sm/controller.h" | ||
| 28 | #include "core/hle/service/sm/sm.h" | 27 | #include "core/hle/service/sm/sm.h" |
| 29 | #include "core/loader/loader.h" | 28 | #include "core/loader/loader.h" |
| 30 | #include "core/perf_stats.h" | 29 | #include "core/perf_stats.h" |
diff --git a/src/core/hle/service/sm/controller.cpp b/src/core/hle/service/sm/controller.cpp index 1cef73216..cdf328a26 100644 --- a/src/core/hle/service/sm/controller.cpp +++ b/src/core/hle/service/sm/controller.cpp | |||
| @@ -57,4 +57,6 @@ Controller::Controller() : ServiceFramework("IpcController") { | |||
| 57 | RegisterHandlers(functions); | 57 | RegisterHandlers(functions); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | Controller::~Controller() = default; | ||
| 61 | |||
| 60 | } // namespace Service::SM | 62 | } // namespace Service::SM |
diff --git a/src/core/hle/service/sm/controller.h b/src/core/hle/service/sm/controller.h index a4de52cd2..dc66c9e37 100644 --- a/src/core/hle/service/sm/controller.h +++ b/src/core/hle/service/sm/controller.h | |||
| @@ -11,7 +11,7 @@ namespace Service::SM { | |||
| 11 | class Controller final : public ServiceFramework<Controller> { | 11 | class Controller final : public ServiceFramework<Controller> { |
| 12 | public: | 12 | public: |
| 13 | Controller(); | 13 | Controller(); |
| 14 | ~Controller() = default; | 14 | ~Controller() override; |
| 15 | 15 | ||
| 16 | private: | 16 | private: |
| 17 | void ConvertSessionToDomain(Kernel::HLERequestContext& ctx); | 17 | void ConvertSessionToDomain(Kernel::HLERequestContext& ctx); |
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index b240d7eed..18d1641b8 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | namespace Service::SM { | 16 | namespace Service::SM { |
| 17 | 17 | ||
| 18 | ServiceManager::ServiceManager() = default; | ||
| 18 | ServiceManager::~ServiceManager() = default; | 19 | ServiceManager::~ServiceManager() = default; |
| 19 | 20 | ||
| 20 | void ServiceManager::InvokeControlRequest(Kernel::HLERequestContext& context) { | 21 | void ServiceManager::InvokeControlRequest(Kernel::HLERequestContext& context) { |
diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index e8ea62f08..a58d922a0 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h | |||
| @@ -46,6 +46,7 @@ class ServiceManager { | |||
| 46 | public: | 46 | public: |
| 47 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self); | 47 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self); |
| 48 | 48 | ||
| 49 | ServiceManager(); | ||
| 49 | ~ServiceManager(); | 50 | ~ServiceManager(); |
| 50 | 51 | ||
| 51 | ResultVal<Kernel::SharedPtr<Kernel::ServerPort>> RegisterService(std::string name, | 52 | ResultVal<Kernel::SharedPtr<Kernel::ServerPort>> RegisterService(std::string name, |
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 1982b76c4..65b5f57c3 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt | |||
| @@ -23,6 +23,7 @@ add_library(video_core STATIC | |||
| 23 | renderer_base.cpp | 23 | renderer_base.cpp |
| 24 | renderer_base.h | 24 | renderer_base.h |
| 25 | renderer_opengl/gl_buffer_cache.cpp | 25 | renderer_opengl/gl_buffer_cache.cpp |
| 26 | renderer_opengl/gl_buffer_cache.h | ||
| 26 | renderer_opengl/gl_rasterizer.cpp | 27 | renderer_opengl/gl_rasterizer.cpp |
| 27 | renderer_opengl/gl_rasterizer.h | 28 | renderer_opengl/gl_rasterizer.h |
| 28 | renderer_opengl/gl_rasterizer_cache.cpp | 29 | renderer_opengl/gl_rasterizer_cache.cpp |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp index c85fbd306..0b5d18bcb 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp | |||
| @@ -2,8 +2,10 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cstring> | ||
| 6 | #include <memory> | ||
| 7 | |||
| 5 | #include "common/alignment.h" | 8 | #include "common/alignment.h" |
| 6 | #include "common/assert.h" | ||
| 7 | #include "core/core.h" | 9 | #include "core/core.h" |
| 8 | #include "core/memory.h" | 10 | #include "core/memory.h" |
| 9 | #include "video_core/renderer_opengl/gl_buffer_cache.h" | 11 | #include "video_core/renderer_opengl/gl_buffer_cache.h" |
| @@ -75,7 +77,7 @@ void OGLBufferCache::Unmap() { | |||
| 75 | stream_buffer.Unmap(buffer_offset - buffer_offset_base); | 77 | stream_buffer.Unmap(buffer_offset - buffer_offset_base); |
| 76 | } | 78 | } |
| 77 | 79 | ||
| 78 | GLuint OGLBufferCache::GetHandle() { | 80 | GLuint OGLBufferCache::GetHandle() const { |
| 79 | return stream_buffer.GetHandle(); | 81 | return stream_buffer.GetHandle(); |
| 80 | } | 82 | } |
| 81 | 83 | ||
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.h b/src/video_core/renderer_opengl/gl_buffer_cache.h index 9c7ad27e6..6da862902 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.h +++ b/src/video_core/renderer_opengl/gl_buffer_cache.h | |||
| @@ -4,8 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <cstddef> | ||
| 7 | #include <memory> | 8 | #include <memory> |
| 8 | #include <unordered_map> | ||
| 9 | 9 | ||
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "video_core/rasterizer_cache.h" | 11 | #include "video_core/rasterizer_cache.h" |
| @@ -31,7 +31,7 @@ struct CachedBufferEntry final { | |||
| 31 | 31 | ||
| 32 | class OGLBufferCache final : public RasterizerCache<std::shared_ptr<CachedBufferEntry>> { | 32 | class OGLBufferCache final : public RasterizerCache<std::shared_ptr<CachedBufferEntry>> { |
| 33 | public: | 33 | public: |
| 34 | OGLBufferCache(size_t size); | 34 | explicit OGLBufferCache(size_t size); |
| 35 | 35 | ||
| 36 | GLintptr UploadMemory(Tegra::GPUVAddr gpu_addr, size_t size, size_t alignment = 4, | 36 | GLintptr UploadMemory(Tegra::GPUVAddr gpu_addr, size_t size, size_t alignment = 4, |
| 37 | bool cache = true); | 37 | bool cache = true); |
| @@ -41,7 +41,7 @@ public: | |||
| 41 | void Map(size_t max_size); | 41 | void Map(size_t max_size); |
| 42 | void Unmap(); | 42 | void Unmap(); |
| 43 | 43 | ||
| 44 | GLuint GetHandle(); | 44 | GLuint GetHandle() const; |
| 45 | 45 | ||
| 46 | protected: | 46 | protected: |
| 47 | void AlignBuffer(size_t alignment); | 47 | void AlignBuffer(size_t alignment); |
| @@ -49,9 +49,9 @@ protected: | |||
| 49 | private: | 49 | private: |
| 50 | OGLStreamBuffer stream_buffer; | 50 | OGLStreamBuffer stream_buffer; |
| 51 | 51 | ||
| 52 | u8* buffer_ptr; | 52 | u8* buffer_ptr = nullptr; |
| 53 | GLintptr buffer_offset; | 53 | GLintptr buffer_offset = 0; |
| 54 | GLintptr buffer_offset_base; | 54 | GLintptr buffer_offset_base = 0; |
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | } // namespace OpenGL | 57 | } // namespace OpenGL |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 5d493a2b2..6e89fa6e3 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -237,6 +237,8 @@ void RasterizerOpenGL::SetupShaders() { | |||
| 237 | } | 237 | } |
| 238 | } | 238 | } |
| 239 | 239 | ||
| 240 | state.Apply(); | ||
| 241 | |||
| 240 | shader_program_manager->UseTrivialGeometryShader(); | 242 | shader_program_manager->UseTrivialGeometryShader(); |
| 241 | } | 243 | } |
| 242 | 244 | ||
| @@ -666,8 +668,6 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, Shader& shad | |||
| 666 | current_bindpoint + bindpoint); | 668 | current_bindpoint + bindpoint); |
| 667 | } | 669 | } |
| 668 | 670 | ||
| 669 | state.Apply(); | ||
| 670 | |||
| 671 | return current_bindpoint + static_cast<u32>(entries.size()); | 671 | return current_bindpoint + static_cast<u32>(entries.size()); |
| 672 | } | 672 | } |
| 673 | 673 | ||
| @@ -714,8 +714,6 @@ u32 RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, Shader& shader, | |||
| 714 | } | 714 | } |
| 715 | } | 715 | } |
| 716 | 716 | ||
| 717 | state.Apply(); | ||
| 718 | |||
| 719 | return current_unit + static_cast<u32>(entries.size()); | 717 | return current_unit + static_cast<u32>(entries.size()); |
| 720 | } | 718 | } |
| 721 | 719 | ||
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 781ddb073..841647ebe 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -2197,11 +2197,15 @@ private: | |||
| 2197 | case OpCode::Id::IPA: { | 2197 | case OpCode::Id::IPA: { |
| 2198 | const auto& attribute = instr.attribute.fmt28; | 2198 | const auto& attribute = instr.attribute.fmt28; |
| 2199 | const auto& reg = instr.gpr0; | 2199 | const auto& reg = instr.gpr0; |
| 2200 | ASSERT_MSG(instr.ipa.saturate == 0, "IPA saturate not implemented"); | 2200 | |
| 2201 | Tegra::Shader::IpaMode input_mode{instr.ipa.interp_mode.Value(), | 2201 | Tegra::Shader::IpaMode input_mode{instr.ipa.interp_mode.Value(), |
| 2202 | instr.ipa.sample_mode.Value()}; | 2202 | instr.ipa.sample_mode.Value()}; |
| 2203 | regs.SetRegisterToInputAttibute(reg, attribute.element, attribute.index, | 2203 | regs.SetRegisterToInputAttibute(reg, attribute.element, attribute.index, |
| 2204 | input_mode); | 2204 | input_mode); |
| 2205 | |||
| 2206 | if (instr.ipa.saturate) { | ||
| 2207 | regs.SetRegisterToFloat(reg, 0, regs.GetRegisterAsFloat(reg), 1, 1, true); | ||
| 2208 | } | ||
| 2205 | break; | 2209 | break; |
| 2206 | } | 2210 | } |
| 2207 | case OpCode::Id::SSY: { | 2211 | case OpCode::Id::SSY: { |
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 6ca05945e..e1b1a9d73 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp | |||
| @@ -42,6 +42,7 @@ layout (std140) uniform vs_config { | |||
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | void main() { | 44 | void main() { |
| 45 | position = vec4(0.0, 0.0, 0.0, 0.0); | ||
| 45 | exec_vertex(); | 46 | exec_vertex(); |
| 46 | )"; | 47 | )"; |
| 47 | 48 | ||