Просмотр исходного кода

Merge pull request #1237 from degasus/optimizations

Optimizations
bunnei 7 лет назад
Родитель
Сommit
9a07e9f805
4 измененных файлов с 7 добавлено и 7 удалено
  1. 2 2
      src/core/core.cpp
  2. 1 1
      src/core/core.h
  3. 2 2
      src/video_core/command_processor.cpp
  4. 2 2
      src/video_core/gpu.h

+ 2 - 2
src/core/core.cpp

@@ -441,8 +441,8 @@ void System::SetGPUDebugContext(std::shared_ptr<Tegra::DebugContext> context) {
     impl->debug_context = std::move(context);
 }
 
-std::shared_ptr<Tegra::DebugContext> System::GetGPUDebugContext() const {
-    return impl->debug_context;
+Tegra::DebugContext* System::GetGPUDebugContext() const {
+    return impl->debug_context.get();
 }
 
 void System::SetFilesystem(std::shared_ptr<FileSys::VfsFilesystem> vfs) {

+ 1 - 1
src/core/core.h

@@ -209,7 +209,7 @@ public:
 
     void SetGPUDebugContext(std::shared_ptr<Tegra::DebugContext> context);
 
-    std::shared_ptr<Tegra::DebugContext> GetGPUDebugContext() const;
+    Tegra::DebugContext* GetGPUDebugContext() const;
 
     void SetFilesystem(std::shared_ptr<FileSys::VfsFilesystem> vfs);
 

+ 2 - 2
src/video_core/command_processor.cpp

@@ -34,6 +34,8 @@ void GPU::WriteReg(u32 method, u32 subchannel, u32 value, u32 remaining_params)
               "{:08X} remaining params {}",
               method, subchannel, value, remaining_params);
 
+    ASSERT(subchannel < bound_engines.size());
+
     if (method == static_cast<u32>(BufferMethods::BindObject)) {
         // Bind the current subchannel to the desired engine id.
         LOG_DEBUG(HW_GPU, "Binding subchannel {} to engine {}", subchannel, value);
@@ -47,8 +49,6 @@ void GPU::WriteReg(u32 method, u32 subchannel, u32 value, u32 remaining_params)
         return;
     }
 
-    ASSERT(bound_engines.find(subchannel) != bound_engines.end());
-
     const EngineID engine = bound_engines[subchannel];
 
     switch (engine) {

+ 2 - 2
src/video_core/gpu.h

@@ -4,8 +4,8 @@
 
 #pragma once
 
+#include <array>
 #include <memory>
-#include <unordered_map>
 #include "common/common_types.h"
 #include "core/hle/service/nvflinger/buffer_queue.h"
 #include "video_core/memory_manager.h"
@@ -136,7 +136,7 @@ private:
     std::unique_ptr<Tegra::MemoryManager> memory_manager;
 
     /// Mapping of command subchannels to their bound engine ids.
-    std::unordered_map<u32, EngineID> bound_engines;
+    std::array<EngineID, 8> bound_engines = {};
 
     /// 3D engine
     std::unique_ptr<Engines::Maxwell3D> maxwell_3d;