forked from ShuriZma/suyu
1
0
Fork 0

Merge pull request #809 from lioncash/rasterizer

gl_rasterizer: Minor cleanup
This commit is contained in:
bunnei 2018-07-24 19:31:34 -07:00 committed by GitHub
commit a6ea6febc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 16 deletions

View File

@ -5,6 +5,7 @@
#include <algorithm> #include <algorithm>
#include <memory> #include <memory>
#include <string> #include <string>
#include <string_view>
#include <tuple> #include <tuple>
#include <utility> #include <utility>
#include <glad/glad.h> #include <glad/glad.h>
@ -37,11 +38,6 @@ MICROPROFILE_DEFINE(OpenGL_Blits, "OpenGL", "Blits", MP_RGB(100, 100, 255));
MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, 255, 100)); MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, 255, 100));
RasterizerOpenGL::RasterizerOpenGL() { RasterizerOpenGL::RasterizerOpenGL() {
has_ARB_buffer_storage = false;
has_ARB_direct_state_access = false;
has_ARB_separate_shader_objects = false;
has_ARB_vertex_attrib_binding = false;
// Create sampler objects // Create sampler objects
for (size_t i = 0; i < texture_samplers.size(); ++i) { for (size_t i = 0; i < texture_samplers.size(); ++i) {
texture_samplers[i].Create(); texture_samplers[i].Create();
@ -59,7 +55,8 @@ RasterizerOpenGL::RasterizerOpenGL() {
GLint ext_num; GLint ext_num;
glGetIntegerv(GL_NUM_EXTENSIONS, &ext_num); glGetIntegerv(GL_NUM_EXTENSIONS, &ext_num);
for (GLint i = 0; i < ext_num; i++) { for (GLint i = 0; i < ext_num; i++) {
std::string extension{reinterpret_cast<const char*>(glGetStringi(GL_EXTENSIONS, i))}; const std::string_view extension{
reinterpret_cast<const char*>(glGetStringi(GL_EXTENSIONS, i))};
if (extension == "GL_ARB_buffer_storage") { if (extension == "GL_ARB_buffer_storage") {
has_ARB_buffer_storage = true; has_ARB_buffer_storage = true;
@ -110,8 +107,6 @@ RasterizerOpenGL::RasterizerOpenGL() {
glBindBufferBase(GL_UNIFORM_BUFFER, index, buffer.handle); glBindBufferBase(GL_UNIFORM_BUFFER, index, buffer.handle);
} }
accelerate_draw = AccelDraw::Disabled;
glEnable(GL_BLEND); glEnable(GL_BLEND);
LOG_CRITICAL(Render_OpenGL, "Sync fixed function OpenGL state here!"); LOG_CRITICAL(Render_OpenGL, "Sync fixed function OpenGL state here!");
@ -694,11 +689,13 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, GLuint progr
glBindBuffer(GL_UNIFORM_BUFFER, 0); glBindBuffer(GL_UNIFORM_BUFFER, 0);
// Now configure the bindpoint of the buffer inside the shader // Now configure the bindpoint of the buffer inside the shader
std::string buffer_name = used_buffer.GetName(); const std::string buffer_name = used_buffer.GetName();
GLuint index = glGetProgramResourceIndex(program, GL_UNIFORM_BLOCK, buffer_name.c_str()); const GLuint index =
if (index != -1) glGetProgramResourceIndex(program, GL_UNIFORM_BLOCK, buffer_name.c_str());
if (index != GL_INVALID_INDEX) {
glUniformBlockBinding(program, index, buffer_draw_state.bindpoint); glUniformBlockBinding(program, index, buffer_draw_state.bindpoint);
} }
}
state.Apply(); state.Apply();

View File

@ -135,10 +135,10 @@ private:
/// Syncs the blend state to match the guest state /// Syncs the blend state to match the guest state
void SyncBlendState(); void SyncBlendState();
bool has_ARB_buffer_storage; bool has_ARB_buffer_storage = false;
bool has_ARB_direct_state_access; bool has_ARB_direct_state_access = false;
bool has_ARB_separate_shader_objects; bool has_ARB_separate_shader_objects = false;
bool has_ARB_vertex_attrib_binding; bool has_ARB_vertex_attrib_binding = false;
OpenGLState state; OpenGLState state;
@ -167,5 +167,5 @@ private:
void SetupShaders(u8* buffer_ptr, GLintptr buffer_offset); void SetupShaders(u8* buffer_ptr, GLintptr buffer_offset);
enum class AccelDraw { Disabled, Arrays, Indexed }; enum class AccelDraw { Disabled, Arrays, Indexed };
AccelDraw accelerate_draw; AccelDraw accelerate_draw = AccelDraw::Disabled;
}; };