|
|
@ -5,6 +5,7 @@ |
|
|
#include <algorithm>
|
|
|
#include <algorithm>
|
|
|
#include <array>
|
|
|
#include <array>
|
|
|
#include <cstddef>
|
|
|
#include <cstddef>
|
|
|
|
|
|
#include <cstring>
|
|
|
#include <optional>
|
|
|
#include <optional>
|
|
|
#include <vector>
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
@ -134,11 +135,13 @@ std::array<Device::BaseBindings, Tegra::Engines::MaxShaderTypes> BuildBaseBindin |
|
|
|
|
|
|
|
|
Device::Device() : base_bindings{BuildBaseBindings()} { |
|
|
Device::Device() : base_bindings{BuildBaseBindings()} { |
|
|
const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); |
|
|
const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); |
|
|
|
|
|
const auto renderer = reinterpret_cast<const char*>(glGetString(GL_RENDERER)); |
|
|
const std::vector extensions = GetExtensions(); |
|
|
const std::vector extensions = GetExtensions(); |
|
|
|
|
|
|
|
|
const bool is_nvidia = vendor == "NVIDIA Corporation"; |
|
|
const bool is_nvidia = vendor == "NVIDIA Corporation"; |
|
|
const bool is_amd = vendor == "ATI Technologies Inc."; |
|
|
const bool is_amd = vendor == "ATI Technologies Inc."; |
|
|
const bool is_intel = vendor == "Intel"; |
|
|
const bool is_intel = vendor == "Intel"; |
|
|
|
|
|
const bool is_intel_proprietary = is_intel && std::strstr(renderer, "Mesa") == nullptr; |
|
|
|
|
|
|
|
|
uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); |
|
|
uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); |
|
|
shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); |
|
|
shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); |
|
|
@ -152,7 +155,7 @@ Device::Device() : base_bindings{BuildBaseBindings()} { |
|
|
has_variable_aoffi = TestVariableAoffi(); |
|
|
has_variable_aoffi = TestVariableAoffi(); |
|
|
has_component_indexing_bug = is_amd; |
|
|
has_component_indexing_bug = is_amd; |
|
|
has_precise_bug = TestPreciseBug(); |
|
|
has_precise_bug = TestPreciseBug(); |
|
|
has_broken_compute = is_intel; |
|
|
|
|
|
|
|
|
has_broken_compute = is_intel_proprietary; |
|
|
has_fast_buffer_sub_data = is_nvidia; |
|
|
has_fast_buffer_sub_data = is_nvidia; |
|
|
|
|
|
|
|
|
LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); |
|
|
LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); |
|
|
|