diff options
| -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 @@  #include "video_core/buffer_cache/buffer_cache.h"  #include "video_core/renderer_opengl/gl_buffer_cache.h"  #include "video_core/renderer_opengl/gl_device.h" -#include "video_core/vulkan_common/vulkan_device.h" -#include "video_core/vulkan_common/vulkan_instance.h" -#include "video_core/vulkan_common/vulkan_library.h" -#include "video_core/vulkan_common/vulkan_memory_allocator.h"  namespace OpenGL {  namespace { @@ -66,11 +62,8 @@ void Buffer::MakeResident(GLenum access) noexcept {      glMakeNamedBufferResidentNV(buffer.handle, access);  } -BufferCacheRuntime::BufferCacheRuntime(const Device& device_, const Vulkan::Device* vulkan_device_, -                                       Vulkan::MemoryAllocator* vulkan_memory_allocator_) -    : device{device_}, vulkan_device{vulkan_device_}, -      vulkan_memory_allocator{vulkan_memory_allocator_}, -      has_fast_buffer_sub_data{device.HasFastBufferSubData()}, +BufferCacheRuntime::BufferCacheRuntime(const Device& device_) +    : device{device_}, has_fast_buffer_sub_data{device.HasFastBufferSubData()},        use_assembly_shaders{device.UseAssemblyShaders()},        has_unified_vertex_buffers{device.HasVertexBufferUnifiedMemory()},        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 @@  #include "video_core/renderer_opengl/gl_device.h"  #include "video_core/renderer_opengl/gl_resource_manager.h"  #include "video_core/renderer_opengl/gl_stream_buffer.h" -#include "video_core/vulkan_common/vulkan_device.h" -#include "video_core/vulkan_common/vulkan_memory_allocator.h" - -namespace Vulkan { -class Device; -class MemoryAllocator; -} // namespace Vulkan  namespace OpenGL { @@ -59,8 +52,7 @@ class BufferCacheRuntime {  public:      static constexpr u8 INVALID_BINDING = std::numeric_limits<u8>::max(); -    explicit BufferCacheRuntime(const Device& device_, const Vulkan::Device* vulkan_device_, -                                Vulkan::MemoryAllocator* vulkan_memory_allocator_); +    explicit BufferCacheRuntime(const Device& device_);      void CopyBuffer(Buffer& dst_buffer, Buffer& src_buffer,                      std::span<const VideoCommon::BufferCopy> copies); @@ -132,8 +124,6 @@ private:      };      const Device& device; -    const Vulkan::Device* vulkan_device; -    Vulkan::MemoryAllocator* vulkan_memory_allocator;      bool has_fast_buffer_sub_data = false;      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() {  }  } // Anonymous namespace -Device::Device(bool has_vulkan_instance) { +Device::Device() {      if (!GLAD_GL_VERSION_4_6) {          LOG_ERROR(Render_OpenGL, "OpenGL 4.6 is not available");          throw std::runtime_error{"Insufficient version"}; @@ -246,8 +246,7 @@ Device::Device(bool has_vulkan_instance) {      use_assembly_shaders = Settings::values.use_assembly_shaders.GetValue() &&                             GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && -                           GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2 && -                           has_vulkan_instance; +                           GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2;      use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue();      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:          u32 image{};      }; -    explicit Device(bool has_vulkan_instance); +    explicit Device();      explicit Device(std::nullptr_t);      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) {  RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_,                                     Core::Memory::Memory& cpu_memory_, const Device& device_, -                                   const Vulkan::Device* vulkan_device, -                                   Vulkan::MemoryAllocator* vulkan_memory_allocator,                                     ScreenInfo& screen_info_, ProgramManager& program_manager_,                                     StateTracker& state_tracker_)      : RasterizerAccelerated(cpu_memory_), gpu(gpu_), maxwell3d(gpu.Maxwell3D()), @@ -176,7 +174,7 @@ RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra        screen_info(screen_info_), program_manager(program_manager_), state_tracker(state_tracker_),        texture_cache_runtime(device, program_manager, state_tracker),        texture_cache(texture_cache_runtime, *this, maxwell3d, kepler_compute, gpu_memory), -      buffer_cache_runtime(device, vulkan_device, vulkan_memory_allocator), +      buffer_cache_runtime(device),        buffer_cache(*this, maxwell3d, kepler_compute, gpu_memory, cpu_memory_, buffer_cache_runtime),        shader_cache(*this, emu_window_, gpu, maxwell3d, kepler_compute, gpu_memory, device),        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 {  class MemoryManager;  } -namespace Vulkan { -class Device; -class MemoryAllocator; -} // namespace Vulkan -  namespace OpenGL {  struct ScreenInfo; @@ -67,8 +62,6 @@ class RasterizerOpenGL : public VideoCore::RasterizerAccelerated {  public:      explicit RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_,                                Core::Memory::Memory& cpu_memory_, const Device& device_, -                              const Vulkan::Device* vulkan_device, -                              Vulkan::MemoryAllocator* vulkan_memory_allocator,                                ScreenInfo& screen_info_, ProgramManager& program_manager_,                                StateTracker& state_tracker_);      ~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 @@  #include "video_core/renderer_opengl/gl_shader_manager.h"  #include "video_core/renderer_opengl/renderer_opengl.h"  #include "video_core/textures/decoders.h" -#include "video_core/vulkan_common/vulkan_debug_callback.h" -#include "video_core/vulkan_common/vulkan_device.h" -#include "video_core/vulkan_common/vulkan_instance.h" -#include "video_core/vulkan_common/vulkan_library.h" -#include "video_core/vulkan_common/vulkan_memory_allocator.h"  namespace OpenGL {  namespace { @@ -127,93 +122,16 @@ void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum severit          break;      }  } - -Vulkan::vk::PhysicalDevice FindPhysicalDevice(Vulkan::vk::Instance& instance) { -    using namespace Vulkan; -    using UUID = std::array<GLubyte, GL_UUID_SIZE_EXT>; - -    GLint num_device_uuids; -    glGetIntegerv(GL_NUM_DEVICE_UUIDS_EXT, &num_device_uuids); -    std::vector<UUID> device_uuids(num_device_uuids); -    for (GLint index = 0; index < num_device_uuids; ++index) { -        glGetUnsignedBytei_vEXT(GL_DEVICE_UUID_EXT, 0, device_uuids[index].data()); -    } -    UUID driver_uuid; -    glGetUnsignedBytevEXT(GL_DRIVER_UUID_EXT, driver_uuid.data()); - -    for (const VkPhysicalDevice raw_physical_device : instance.EnumeratePhysicalDevices()) { -        VkPhysicalDeviceIDProperties device_id_properties{}; -        device_id_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES; - -        VkPhysicalDeviceProperties2KHR properties{ -            .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, -            .pNext = &device_id_properties, -            .properties{}, -        }; -        vk::PhysicalDevice physical_device(raw_physical_device, instance.Dispatch()); -        physical_device.GetProperties2KHR(properties); -        if (!std::ranges::equal(device_id_properties.driverUUID, driver_uuid)) { -            continue; -        } -        const auto it = -            std::ranges::find_if(device_uuids, [&device_id_properties, driver_uuid](UUID uuid) { -                return std::ranges::equal(device_id_properties.deviceUUID, uuid); -            }); -        if (it != device_uuids.end()) { -            return physical_device; -        } -    } -    throw vk::Exception(VK_ERROR_INCOMPATIBLE_DRIVER); -}  } // Anonymous namespace -struct VulkanObjects { -    static std::unique_ptr<VulkanObjects> TryCreate() { -        if (!GLAD_GL_EXT_memory_object) { -            // Interop is not present -            return nullptr; -        } -        const std::string_view vendor{reinterpret_cast<const char*>(glGetString(GL_VENDOR))}; -        if (vendor == "ATI Technologies Inc.") { -            // Avoid using GL_EXT_memory_object on AMD, as it makes the GL driver crash -            return nullptr; -        } -        if (!Settings::values.use_assembly_shaders.GetValue()) { -            // We only need interop when assembly shaders are enabled -            return nullptr; -        } -#ifdef __linux__ -        LOG_WARNING(Render_OpenGL, "Interop doesn't work on Linux at the moment"); -        return nullptr; -#endif -        try { -            return std::make_unique<VulkanObjects>(); -        } catch (const Vulkan::vk::Exception& exception) { -            LOG_ERROR(Render_OpenGL, "Failed to initialize Vulkan objects with error: {}", -                      exception.what()); -            return nullptr; -        } -    } - -    Common::DynamicLibrary library{Vulkan::OpenLibrary()}; -    Vulkan::vk::InstanceDispatch dld; -    Vulkan::vk::Instance instance{Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_1)}; -    Vulkan::Device device{*instance, FindPhysicalDevice(instance), nullptr, dld}; -    Vulkan::MemoryAllocator memory_allocator{device, true}; -}; -  RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_,                                 Core::Frontend::EmuWindow& emu_window_,                                 Core::Memory::Memory& cpu_memory_, Tegra::GPU& gpu_,                                 std::unique_ptr<Core::Frontend::GraphicsContext> context_)      : RendererBase{emu_window_, std::move(context_)}, telemetry_session{telemetry_session_}, -      emu_window{emu_window_}, cpu_memory{cpu_memory_}, gpu{gpu_}, -      vulkan_objects{VulkanObjects::TryCreate()}, device{vulkan_objects != nullptr}, -      state_tracker{gpu}, program_manager{device}, -      rasterizer(emu_window, gpu, cpu_memory, device, -                 vulkan_objects ? &vulkan_objects->device : nullptr, -                 vulkan_objects ? &vulkan_objects->memory_allocator : nullptr, screen_info, -                 program_manager, state_tracker) { +      emu_window{emu_window_}, cpu_memory{cpu_memory_}, gpu{gpu_}, state_tracker{gpu}, +      program_manager{device}, +      rasterizer(emu_window, gpu, cpu_memory, device, screen_info, program_manager, state_tracker) {      if (Settings::values.renderer_debug && GLAD_GL_KHR_debug) {          glEnable(GL_DEBUG_OUTPUT);          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;  namespace OpenGL { -struct VulkanObjects; -  /// Structure used for storing information about the textures for the Switch screen  struct TextureInfo {      OGLTexture resource; @@ -101,7 +99,6 @@ private:      Core::Memory::Memory& cpu_memory;      Tegra::GPU& gpu; -    std::unique_ptr<VulkanObjects> vulkan_objects;      Device device;      StateTracker state_tracker;      ProgramManager program_manager; | 
