diff options
| author | 2021-01-18 19:04:27 -0300 | |
|---|---|---|
| committer | 2021-02-13 02:18:04 -0300 | |
| commit | 0b631f22fc1c05e485defbfbc829157e4ed1fe4d (patch) | |
| tree | 69befa56000910ed229730d58664ca1efb2f41a4 /src | |
| parent | gl_buffer_cache: Drop interop based parameter buffer workarounds (diff) | |
| download | yuzu-0b631f22fc1c05e485defbfbc829157e4ed1fe4d.tar.gz yuzu-0b631f22fc1c05e485defbfbc829157e4ed1fe4d.tar.xz yuzu-0b631f22fc1c05e485defbfbc829157e4ed1fe4d.zip | |
renderer_opengl: Remove interop
Remove unused interop code from the OpenGL backend.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.cpp | 11 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.h | 12 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.h | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 88 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.h | 3 |
8 files changed, 10 insertions, 122 deletions
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp index 1e555098d..6da3906a4 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp | |||
| @@ -7,10 +7,6 @@ | |||
| 7 | #include "video_core/buffer_cache/buffer_cache.h" | 7 | #include "video_core/buffer_cache/buffer_cache.h" |
| 8 | #include "video_core/renderer_opengl/gl_buffer_cache.h" | 8 | #include "video_core/renderer_opengl/gl_buffer_cache.h" |
| 9 | #include "video_core/renderer_opengl/gl_device.h" | 9 | #include "video_core/renderer_opengl/gl_device.h" |
| 10 | #include "video_core/vulkan_common/vulkan_device.h" | ||
| 11 | #include "video_core/vulkan_common/vulkan_instance.h" | ||
| 12 | #include "video_core/vulkan_common/vulkan_library.h" | ||
| 13 | #include "video_core/vulkan_common/vulkan_memory_allocator.h" | ||
| 14 | 10 | ||
| 15 | namespace OpenGL { | 11 | namespace OpenGL { |
| 16 | namespace { | 12 | namespace { |
| @@ -66,11 +62,8 @@ void Buffer::MakeResident(GLenum access) noexcept { | |||
| 66 | glMakeNamedBufferResidentNV(buffer.handle, access); | 62 | glMakeNamedBufferResidentNV(buffer.handle, access); |
| 67 | } | 63 | } |
| 68 | 64 | ||
| 69 | BufferCacheRuntime::BufferCacheRuntime(const Device& device_, const Vulkan::Device* vulkan_device_, | 65 | BufferCacheRuntime::BufferCacheRuntime(const Device& device_) |
| 70 | Vulkan::MemoryAllocator* vulkan_memory_allocator_) | 66 | : device{device_}, has_fast_buffer_sub_data{device.HasFastBufferSubData()}, |
| 71 | : device{device_}, vulkan_device{vulkan_device_}, | ||
| 72 | vulkan_memory_allocator{vulkan_memory_allocator_}, | ||
| 73 | has_fast_buffer_sub_data{device.HasFastBufferSubData()}, | ||
| 74 | use_assembly_shaders{device.UseAssemblyShaders()}, | 67 | use_assembly_shaders{device.UseAssemblyShaders()}, |
| 75 | has_unified_vertex_buffers{device.HasVertexBufferUnifiedMemory()}, | 68 | has_unified_vertex_buffers{device.HasVertexBufferUnifiedMemory()}, |
| 76 | stream_buffer{has_fast_buffer_sub_data ? std::nullopt : std::make_optional<StreamBuffer>()} { | 69 | stream_buffer{has_fast_buffer_sub_data ? std::nullopt : std::make_optional<StreamBuffer>()} { |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.h b/src/video_core/renderer_opengl/gl_buffer_cache.h index 35c9deb51..d8b20a9af 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.h +++ b/src/video_core/renderer_opengl/gl_buffer_cache.h | |||
| @@ -15,13 +15,6 @@ | |||
| 15 | #include "video_core/renderer_opengl/gl_device.h" | 15 | #include "video_core/renderer_opengl/gl_device.h" |
| 16 | #include "video_core/renderer_opengl/gl_resource_manager.h" | 16 | #include "video_core/renderer_opengl/gl_resource_manager.h" |
| 17 | #include "video_core/renderer_opengl/gl_stream_buffer.h" | 17 | #include "video_core/renderer_opengl/gl_stream_buffer.h" |
| 18 | #include "video_core/vulkan_common/vulkan_device.h" | ||
| 19 | #include "video_core/vulkan_common/vulkan_memory_allocator.h" | ||
| 20 | |||
| 21 | namespace Vulkan { | ||
| 22 | class Device; | ||
| 23 | class MemoryAllocator; | ||
| 24 | } // namespace Vulkan | ||
| 25 | 18 | ||
| 26 | namespace OpenGL { | 19 | namespace OpenGL { |
| 27 | 20 | ||
| @@ -59,8 +52,7 @@ class BufferCacheRuntime { | |||
| 59 | public: | 52 | public: |
| 60 | static constexpr u8 INVALID_BINDING = std::numeric_limits<u8>::max(); | 53 | static constexpr u8 INVALID_BINDING = std::numeric_limits<u8>::max(); |
| 61 | 54 | ||
| 62 | explicit BufferCacheRuntime(const Device& device_, const Vulkan::Device* vulkan_device_, | 55 | explicit BufferCacheRuntime(const Device& device_); |
| 63 | Vulkan::MemoryAllocator* vulkan_memory_allocator_); | ||
| 64 | 56 | ||
| 65 | void CopyBuffer(Buffer& dst_buffer, Buffer& src_buffer, | 57 | void CopyBuffer(Buffer& dst_buffer, Buffer& src_buffer, |
| 66 | std::span<const VideoCommon::BufferCopy> copies); | 58 | std::span<const VideoCommon::BufferCopy> copies); |
| @@ -132,8 +124,6 @@ private: | |||
| 132 | }; | 124 | }; |
| 133 | 125 | ||
| 134 | const Device& device; | 126 | const Device& device; |
| 135 | const Vulkan::Device* vulkan_device; | ||
| 136 | Vulkan::MemoryAllocator* vulkan_memory_allocator; | ||
| 137 | 127 | ||
| 138 | bool has_fast_buffer_sub_data = false; | 128 | bool has_fast_buffer_sub_data = false; |
| 139 | bool use_assembly_shaders = false; | 129 | bool use_assembly_shaders = false; |
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 0f492f006..48d5c4a5e 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -197,7 +197,7 @@ bool IsASTCSupported() { | |||
| 197 | } | 197 | } |
| 198 | } // Anonymous namespace | 198 | } // Anonymous namespace |
| 199 | 199 | ||
| 200 | Device::Device(bool has_vulkan_instance) { | 200 | Device::Device() { |
| 201 | if (!GLAD_GL_VERSION_4_6) { | 201 | if (!GLAD_GL_VERSION_4_6) { |
| 202 | LOG_ERROR(Render_OpenGL, "OpenGL 4.6 is not available"); | 202 | LOG_ERROR(Render_OpenGL, "OpenGL 4.6 is not available"); |
| 203 | throw std::runtime_error{"Insufficient version"}; | 203 | throw std::runtime_error{"Insufficient version"}; |
| @@ -246,8 +246,7 @@ Device::Device(bool has_vulkan_instance) { | |||
| 246 | 246 | ||
| 247 | use_assembly_shaders = Settings::values.use_assembly_shaders.GetValue() && | 247 | use_assembly_shaders = Settings::values.use_assembly_shaders.GetValue() && |
| 248 | GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && | 248 | GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && |
| 249 | GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2 && | 249 | GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; |
| 250 | has_vulkan_instance; | ||
| 251 | 250 | ||
| 252 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue(); | 251 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue(); |
| 253 | use_driver_cache = is_nvidia; | 252 | use_driver_cache = is_nvidia; |
diff --git a/src/video_core/renderer_opengl/gl_device.h b/src/video_core/renderer_opengl/gl_device.h index eb62ae52d..ee053776d 100644 --- a/src/video_core/renderer_opengl/gl_device.h +++ b/src/video_core/renderer_opengl/gl_device.h | |||
| @@ -19,7 +19,7 @@ public: | |||
| 19 | u32 image{}; | 19 | u32 image{}; |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | explicit Device(bool has_vulkan_instance); | 22 | explicit Device(); |
| 23 | explicit Device(std::nullptr_t); | 23 | explicit Device(std::nullptr_t); |
| 24 | 24 | ||
| 25 | u32 GetMaxUniformBuffers(Tegra::Engines::ShaderType shader_type) const noexcept { | 25 | u32 GetMaxUniformBuffers(Tegra::Engines::ShaderType shader_type) const noexcept { |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 52499ee4c..ddc668fbc 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -167,8 +167,6 @@ ImageViewType ImageViewTypeFromEntry(const ImageEntry& entry) { | |||
| 167 | 167 | ||
| 168 | RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_, | 168 | RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_, |
| 169 | Core::Memory::Memory& cpu_memory_, const Device& device_, | 169 | Core::Memory::Memory& cpu_memory_, const Device& device_, |
| 170 | const Vulkan::Device* vulkan_device, | ||
| 171 | Vulkan::MemoryAllocator* vulkan_memory_allocator, | ||
| 172 | ScreenInfo& screen_info_, ProgramManager& program_manager_, | 170 | ScreenInfo& screen_info_, ProgramManager& program_manager_, |
| 173 | StateTracker& state_tracker_) | 171 | StateTracker& state_tracker_) |
| 174 | : RasterizerAccelerated(cpu_memory_), gpu(gpu_), maxwell3d(gpu.Maxwell3D()), | 172 | : RasterizerAccelerated(cpu_memory_), gpu(gpu_), maxwell3d(gpu.Maxwell3D()), |
| @@ -176,7 +174,7 @@ RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra | |||
| 176 | screen_info(screen_info_), program_manager(program_manager_), state_tracker(state_tracker_), | 174 | screen_info(screen_info_), program_manager(program_manager_), state_tracker(state_tracker_), |
| 177 | texture_cache_runtime(device, program_manager, state_tracker), | 175 | texture_cache_runtime(device, program_manager, state_tracker), |
| 178 | texture_cache(texture_cache_runtime, *this, maxwell3d, kepler_compute, gpu_memory), | 176 | texture_cache(texture_cache_runtime, *this, maxwell3d, kepler_compute, gpu_memory), |
| 179 | buffer_cache_runtime(device, vulkan_device, vulkan_memory_allocator), | 177 | buffer_cache_runtime(device), |
| 180 | buffer_cache(*this, maxwell3d, kepler_compute, gpu_memory, cpu_memory_, buffer_cache_runtime), | 178 | buffer_cache(*this, maxwell3d, kepler_compute, gpu_memory, cpu_memory_, buffer_cache_runtime), |
| 181 | shader_cache(*this, emu_window_, gpu, maxwell3d, kepler_compute, gpu_memory, device), | 179 | shader_cache(*this, emu_window_, gpu, maxwell3d, kepler_compute, gpu_memory, device), |
| 182 | query_cache(*this, maxwell3d, gpu_memory), | 180 | query_cache(*this, maxwell3d, gpu_memory), |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 31d69a94c..3745cf637 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -46,11 +46,6 @@ namespace Tegra { | |||
| 46 | class MemoryManager; | 46 | class MemoryManager; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | namespace Vulkan { | ||
| 50 | class Device; | ||
| 51 | class MemoryAllocator; | ||
| 52 | } // namespace Vulkan | ||
| 53 | |||
| 54 | namespace OpenGL { | 49 | namespace OpenGL { |
| 55 | 50 | ||
| 56 | struct ScreenInfo; | 51 | struct ScreenInfo; |
| @@ -67,8 +62,6 @@ class RasterizerOpenGL : public VideoCore::RasterizerAccelerated { | |||
| 67 | public: | 62 | public: |
| 68 | explicit RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_, | 63 | explicit RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_, |
| 69 | Core::Memory::Memory& cpu_memory_, const Device& device_, | 64 | Core::Memory::Memory& cpu_memory_, const Device& device_, |
| 70 | const Vulkan::Device* vulkan_device, | ||
| 71 | Vulkan::MemoryAllocator* vulkan_memory_allocator, | ||
| 72 | ScreenInfo& screen_info_, ProgramManager& program_manager_, | 65 | ScreenInfo& screen_info_, ProgramManager& program_manager_, |
| 73 | StateTracker& state_tracker_); | 66 | StateTracker& state_tracker_); |
| 74 | ~RasterizerOpenGL() override; | 67 | ~RasterizerOpenGL() override; |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 8fcb86581..9d2acd4d9 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -27,11 +27,6 @@ | |||
| 27 | #include "video_core/renderer_opengl/gl_shader_manager.h" | 27 | #include "video_core/renderer_opengl/gl_shader_manager.h" |
| 28 | #include "video_core/renderer_opengl/renderer_opengl.h" | 28 | #include "video_core/renderer_opengl/renderer_opengl.h" |
| 29 | #include "video_core/textures/decoders.h" | 29 | #include "video_core/textures/decoders.h" |
| 30 | #include "video_core/vulkan_common/vulkan_debug_callback.h" | ||
| 31 | #include "video_core/vulkan_common/vulkan_device.h" | ||
| 32 | #include "video_core/vulkan_common/vulkan_instance.h" | ||
| 33 | #include "video_core/vulkan_common/vulkan_library.h" | ||
| 34 | #include "video_core/vulkan_common/vulkan_memory_allocator.h" | ||
| 35 | 30 | ||
| 36 | namespace OpenGL { | 31 | namespace OpenGL { |
| 37 | namespace { | 32 | namespace { |
| @@ -127,93 +122,16 @@ void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum severit | |||
| 127 | break; | 122 | break; |
| 128 | } | 123 | } |
| 129 | } | 124 | } |
| 130 | |||
| 131 | Vulkan::vk::PhysicalDevice FindPhysicalDevice(Vulkan::vk::Instance& instance) { | ||
| 132 | using namespace Vulkan; | ||
| 133 | using UUID = std::array<GLubyte, GL_UUID_SIZE_EXT>; | ||
| 134 | |||
| 135 | GLint num_device_uuids; | ||
| 136 | glGetIntegerv(GL_NUM_DEVICE_UUIDS_EXT, &num_device_uuids); | ||
| 137 | std::vector<UUID> device_uuids(num_device_uuids); | ||
| 138 | for (GLint index = 0; index < num_device_uuids; ++index) { | ||
| 139 | glGetUnsignedBytei_vEXT(GL_DEVICE_UUID_EXT, 0, device_uuids[index].data()); | ||
| 140 | } | ||
| 141 | UUID driver_uuid; | ||
| 142 | glGetUnsignedBytevEXT(GL_DRIVER_UUID_EXT, driver_uuid.data()); | ||
| 143 | |||
| 144 | for (const VkPhysicalDevice raw_physical_device : instance.EnumeratePhysicalDevices()) { | ||
| 145 | VkPhysicalDeviceIDProperties device_id_properties{}; | ||
| 146 | device_id_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES; | ||
| 147 | |||
| 148 | VkPhysicalDeviceProperties2KHR properties{ | ||
| 149 | .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, | ||
| 150 | .pNext = &device_id_properties, | ||
| 151 | .properties{}, | ||
| 152 | }; | ||
| 153 | vk::PhysicalDevice physical_device(raw_physical_device, instance.Dispatch()); | ||
| 154 | physical_device.GetProperties2KHR(properties); | ||
| 155 | if (!std::ranges::equal(device_id_properties.driverUUID, driver_uuid)) { | ||
| 156 | continue; | ||
| 157 | } | ||
| 158 | const auto it = | ||
| 159 | std::ranges::find_if(device_uuids, [&device_id_properties, driver_uuid](UUID uuid) { | ||
| 160 | return std::ranges::equal(device_id_properties.deviceUUID, uuid); | ||
| 161 | }); | ||
| 162 | if (it != device_uuids.end()) { | ||
| 163 | return physical_device; | ||
| 164 | } | ||
| 165 | } | ||
| 166 | throw vk::Exception(VK_ERROR_INCOMPATIBLE_DRIVER); | ||
| 167 | } | ||
| 168 | } // Anonymous namespace | 125 | } // Anonymous namespace |
| 169 | 126 | ||
| 170 | struct VulkanObjects { | ||
| 171 | static std::unique_ptr<VulkanObjects> TryCreate() { | ||
| 172 | if (!GLAD_GL_EXT_memory_object) { | ||
| 173 | // Interop is not present | ||
| 174 | return nullptr; | ||
| 175 | } | ||
| 176 | const std::string_view vendor{reinterpret_cast<const char*>(glGetString(GL_VENDOR))}; | ||
| 177 | if (vendor == "ATI Technologies Inc.") { | ||
| 178 | // Avoid using GL_EXT_memory_object on AMD, as it makes the GL driver crash | ||
| 179 | return nullptr; | ||
| 180 | } | ||
| 181 | if (!Settings::values.use_assembly_shaders.GetValue()) { | ||
| 182 | // We only need interop when assembly shaders are enabled | ||
| 183 | return nullptr; | ||
| 184 | } | ||
| 185 | #ifdef __linux__ | ||
| 186 | LOG_WARNING(Render_OpenGL, "Interop doesn't work on Linux at the moment"); | ||
| 187 | return nullptr; | ||
| 188 | #endif | ||
| 189 | try { | ||
| 190 | return std::make_unique<VulkanObjects>(); | ||
| 191 | } catch (const Vulkan::vk::Exception& exception) { | ||
| 192 | LOG_ERROR(Render_OpenGL, "Failed to initialize Vulkan objects with error: {}", | ||
| 193 | exception.what()); | ||
| 194 | return nullptr; | ||
| 195 | } | ||
| 196 | } | ||
| 197 | |||
| 198 | Common::DynamicLibrary library{Vulkan::OpenLibrary()}; | ||
| 199 | Vulkan::vk::InstanceDispatch dld; | ||
| 200 | Vulkan::vk::Instance instance{Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_1)}; | ||
| 201 | Vulkan::Device device{*instance, FindPhysicalDevice(instance), nullptr, dld}; | ||
| 202 | Vulkan::MemoryAllocator memory_allocator{device, true}; | ||
| 203 | }; | ||
| 204 | |||
| 205 | RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_, | 127 | RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_, |
| 206 | Core::Frontend::EmuWindow& emu_window_, | 128 | Core::Frontend::EmuWindow& emu_window_, |
| 207 | Core::Memory::Memory& cpu_memory_, Tegra::GPU& gpu_, | 129 | Core::Memory::Memory& cpu_memory_, Tegra::GPU& gpu_, |
| 208 | std::unique_ptr<Core::Frontend::GraphicsContext> context_) | 130 | std::unique_ptr<Core::Frontend::GraphicsContext> context_) |
| 209 | : RendererBase{emu_window_, std::move(context_)}, telemetry_session{telemetry_session_}, | 131 | : RendererBase{emu_window_, std::move(context_)}, telemetry_session{telemetry_session_}, |
| 210 | emu_window{emu_window_}, cpu_memory{cpu_memory_}, gpu{gpu_}, | 132 | emu_window{emu_window_}, cpu_memory{cpu_memory_}, gpu{gpu_}, state_tracker{gpu}, |
| 211 | vulkan_objects{VulkanObjects::TryCreate()}, device{vulkan_objects != nullptr}, | 133 | program_manager{device}, |
| 212 | state_tracker{gpu}, program_manager{device}, | 134 | rasterizer(emu_window, gpu, cpu_memory, device, screen_info, program_manager, state_tracker) { |
| 213 | rasterizer(emu_window, gpu, cpu_memory, device, | ||
| 214 | vulkan_objects ? &vulkan_objects->device : nullptr, | ||
| 215 | vulkan_objects ? &vulkan_objects->memory_allocator : nullptr, screen_info, | ||
| 216 | program_manager, state_tracker) { | ||
| 217 | if (Settings::values.renderer_debug && GLAD_GL_KHR_debug) { | 135 | if (Settings::values.renderer_debug && GLAD_GL_KHR_debug) { |
| 218 | glEnable(GL_DEBUG_OUTPUT); | 136 | glEnable(GL_DEBUG_OUTPUT); |
| 219 | glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); | 137 | glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index f210190dd..cc19a110f 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h | |||
| @@ -38,8 +38,6 @@ class GPU; | |||
| 38 | 38 | ||
| 39 | namespace OpenGL { | 39 | namespace OpenGL { |
| 40 | 40 | ||
| 41 | struct VulkanObjects; | ||
| 42 | |||
| 43 | /// Structure used for storing information about the textures for the Switch screen | 41 | /// Structure used for storing information about the textures for the Switch screen |
| 44 | struct TextureInfo { | 42 | struct TextureInfo { |
| 45 | OGLTexture resource; | 43 | OGLTexture resource; |
| @@ -101,7 +99,6 @@ private: | |||
| 101 | Core::Memory::Memory& cpu_memory; | 99 | Core::Memory::Memory& cpu_memory; |
| 102 | Tegra::GPU& gpu; | 100 | Tegra::GPU& gpu; |
| 103 | 101 | ||
| 104 | std::unique_ptr<VulkanObjects> vulkan_objects; | ||
| 105 | Device device; | 102 | Device device; |
| 106 | StateTracker state_tracker; | 103 | StateTracker state_tracker; |
| 107 | ProgramManager program_manager; | 104 | ProgramManager program_manager; |