Przeglądaj źródła

Shader_IR: Allow constant access of guest driver.

Fernando Sahmkow 6 lat temu
rodzic
commit
b97608ca64

+ 1 - 0
src/video_core/engines/const_buffer_engine_interface.h

@@ -109,6 +109,7 @@ public:
     virtual u32 GetBoundBuffer() const = 0;
     virtual u32 GetBoundBuffer() const = 0;
 
 
     virtual VideoCore::GuestDriverProfile& AccessGuestDriverProfile() = 0;
     virtual VideoCore::GuestDriverProfile& AccessGuestDriverProfile() = 0;
+    virtual const VideoCore::GuestDriverProfile& AccessGuestDriverProfile() const = 0;
 };
 };
 
 
 } // namespace Tegra::Engines
 } // namespace Tegra::Engines

+ 4 - 0
src/video_core/engines/kepler_compute.cpp

@@ -98,6 +98,10 @@ VideoCore::GuestDriverProfile& KeplerCompute::AccessGuestDriverProfile() {
     return rasterizer.AccessGuestDriverProfile();
     return rasterizer.AccessGuestDriverProfile();
 }
 }
 
 
+const VideoCore::GuestDriverProfile& KeplerCompute::AccessGuestDriverProfile() const {
+    return rasterizer.AccessGuestDriverProfile();
+}
+
 void KeplerCompute::ProcessLaunch() {
 void KeplerCompute::ProcessLaunch() {
     const GPUVAddr launch_desc_loc = regs.launch_desc_loc.Address();
     const GPUVAddr launch_desc_loc = regs.launch_desc_loc.Address();
     memory_manager.ReadBlockUnsafe(launch_desc_loc, &launch_description,
     memory_manager.ReadBlockUnsafe(launch_desc_loc, &launch_description,

+ 2 - 0
src/video_core/engines/kepler_compute.h

@@ -220,6 +220,8 @@ public:
 
 
     VideoCore::GuestDriverProfile& AccessGuestDriverProfile() override;
     VideoCore::GuestDriverProfile& AccessGuestDriverProfile() override;
 
 
+    const VideoCore::GuestDriverProfile& AccessGuestDriverProfile() const override;
+
 private:
 private:
     Core::System& system;
     Core::System& system;
     VideoCore::RasterizerInterface& rasterizer;
     VideoCore::RasterizerInterface& rasterizer;

+ 4 - 0
src/video_core/engines/maxwell_3d.cpp

@@ -788,4 +788,8 @@ VideoCore::GuestDriverProfile& Maxwell3D::AccessGuestDriverProfile() {
     return rasterizer.AccessGuestDriverProfile();
     return rasterizer.AccessGuestDriverProfile();
 }
 }
 
 
+const VideoCore::GuestDriverProfile& Maxwell3D::AccessGuestDriverProfile() const {
+    return rasterizer.AccessGuestDriverProfile();
+}
+
 } // namespace Tegra::Engines
 } // namespace Tegra::Engines

+ 2 - 0
src/video_core/engines/maxwell_3d.h

@@ -1308,6 +1308,8 @@ public:
 
 
     VideoCore::GuestDriverProfile& AccessGuestDriverProfile() override;
     VideoCore::GuestDriverProfile& AccessGuestDriverProfile() override;
 
 
+    const VideoCore::GuestDriverProfile& AccessGuestDriverProfile() const override;
+
     /// Memory for macro code - it's undetermined how big this is, however 1MB is much larger than
     /// Memory for macro code - it's undetermined how big this is, however 1MB is much larger than
     /// we've seen used.
     /// we've seen used.
     using MacroMemory = std::array<u32, 0x40000>;
     using MacroMemory = std::array<u32, 0x40000>;

+ 4 - 0
src/video_core/rasterizer_interface.h

@@ -84,6 +84,10 @@ public:
         return guest_driver_profile;
         return guest_driver_profile;
     }
     }
 
 
+    const GuestDriverProfile& AccessGuestDriverProfile() const {
+        return guest_driver_profile;
+    }
+
 private:
 private:
     GuestDriverProfile guest_driver_profile{};
     GuestDriverProfile guest_driver_profile{};
 };
 };

+ 1 - 1
src/video_core/shader/const_buffer_locker.h

@@ -81,7 +81,7 @@ public:
         return bound_buffer;
         return bound_buffer;
     }
     }
 
 
-    VideoCore::GuestDriverProfile* AccessGuestDriverProfile() {
+    VideoCore::GuestDriverProfile* AccessGuestDriverProfile() const {
         if (engine) {
         if (engine) {
             return &(engine->AccessGuestDriverProfile());
             return &(engine->AccessGuestDriverProfile());
         }
         }