Shader_IR: Allow constant access of guest driver.

This commit is contained in:
Fernando Sahmkow 2020-01-08 10:28:29 -04:00 committed by FernandoS27
parent dc5cfa8d28
commit b97608ca64
7 changed files with 18 additions and 1 deletions

View file

@ -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

View file

@ -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,

View file

@ -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;

View file

@ -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

View file

@ -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>;

View file

@ -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{};
}; };

View file

@ -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());
} }