summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_device.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-11-25 01:36:30 +0100
committerGitHub <noreply@github.com>2019-11-25 01:36:30 +0100
commitb03242067d9ba9e3ad9804d2ccfe596f45da6ba6 (patch)
tree386c8566d385869702b34ddb00ff58f7e8e275bf /src/video_core/renderer_opengl/gl_device.h
parentMerge pull request #3105 from ReinUsesLisp/fix-stencil-reg (diff)
parentgl_device: Reserve base bindings on limited devices (diff)
downloadyuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar.gz
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar.bz2
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar.lz
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar.xz
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.tar.zst
yuzu-b03242067d9ba9e3ad9804d2ccfe596f45da6ba6.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_device.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.h b/src/video_core/renderer_opengl/gl_device.h
index 6c86fe207..5433815b9 100644
--- a/src/video_core/renderer_opengl/gl_device.h
+++ b/src/video_core/renderer_opengl/gl_device.h
@@ -6,14 +6,32 @@
#include <cstddef>
#include "common/common_types.h"
+#include "video_core/engines/shader_type.h"
namespace OpenGL {
-class Device {
+static constexpr u32 EmulationUniformBlockBinding = 0;
+
+class Device final {
public:
+ struct BaseBindings final {
+ u32 uniform_buffer{};
+ u32 shader_storage_buffer{};
+ u32 sampler{};
+ u32 image{};
+ };
+
explicit Device();
explicit Device(std::nullptr_t);
+ const BaseBindings& GetBaseBindings(std::size_t stage_index) const noexcept {
+ return base_bindings[stage_index];
+ }
+
+ const BaseBindings& GetBaseBindings(Tegra::Engines::ShaderType shader_type) const noexcept {
+ return GetBaseBindings(static_cast<std::size_t>(shader_type));
+ }
+
std::size_t GetUniformBufferAlignment() const {
return uniform_buffer_alignment;
}
@@ -58,6 +76,10 @@ public:
return has_precise_bug;
}
+ bool HasBrokenCompute() const {
+ return has_broken_compute;
+ }
+
bool HasFastBufferSubData() const {
return has_fast_buffer_sub_data;
}
@@ -67,6 +89,7 @@ private:
static bool TestComponentIndexingBug();
static bool TestPreciseBug();
+ std::array<BaseBindings, Tegra::Engines::MaxShaderTypes> base_bindings;
std::size_t uniform_buffer_alignment{};
std::size_t shader_storage_alignment{};
u32 max_vertex_attributes{};
@@ -78,6 +101,7 @@ private:
bool has_variable_aoffi{};
bool has_component_indexing_bug{};
bool has_precise_bug{};
+ bool has_broken_compute{};
bool has_fast_buffer_sub_data{};
};