summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-06-26 01:14:06 -0300
committerGravatar ameerj2021-07-22 21:51:39 -0400
commit5643a909bc3fa9f497d2f2e68650f823ed2944ac (patch)
tree9fd367abf424ed751d0053e22b7bc53ed6b4e61c /src/video_core
parentglsl: Fix shared and local memory declarations (diff)
downloadyuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.tar.gz
yuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.tar.xz
yuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.zip
shader: Fix disabled and unwritten attributes and varyings
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index b8777643b..dab0afe6d 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -140,6 +140,26 @@ RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_,
140 } 140 }
141 AddTelemetryFields(); 141 AddTelemetryFields();
142 InitOpenGLObjects(); 142 InitOpenGLObjects();
143
144 // Initialize default attributes to match hardware's disabled attributes
145 GLint max_attribs{};
146 glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &max_attribs);
147 for (GLint attrib = 0; attrib < max_attribs; ++attrib) {
148 glVertexAttrib4f(attrib, 0.0f, 0.0f, 0.0f, 0.0f);
149 }
150 // Enable seamless cubemaps when per texture parameters are not available
151 if (!GLAD_GL_ARB_seamless_cubemap_per_texture && !GLAD_GL_AMD_seamless_cubemap_per_texture) {
152 glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
153 }
154 // Enable unified vertex attributes and query vertex buffer address when the driver supports it
155 if (device.HasVertexBufferUnifiedMemory()) {
156 glEnableClientState(GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV);
157 glEnableClientState(GL_ELEMENT_ARRAY_UNIFIED_NV);
158
159 glMakeNamedBufferResidentNV(vertex_buffer.handle, GL_READ_ONLY);
160 glGetNamedBufferParameterui64vNV(vertex_buffer.handle, GL_BUFFER_GPU_ADDRESS_NV,
161 &vertex_buffer_address);
162 }
143} 163}
144 164
145RendererOpenGL::~RendererOpenGL() = default; 165RendererOpenGL::~RendererOpenGL() = default;
@@ -256,21 +276,6 @@ void RendererOpenGL::InitOpenGLObjects() {
256 276
257 // Clear screen to black 277 // Clear screen to black
258 LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture); 278 LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture);
259
260 // Enable seamless cubemaps when per texture parameters are not available
261 if (!GLAD_GL_ARB_seamless_cubemap_per_texture && !GLAD_GL_AMD_seamless_cubemap_per_texture) {
262 glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
263 }
264
265 // Enable unified vertex attributes and query vertex buffer address when the driver supports it
266 if (device.HasVertexBufferUnifiedMemory()) {
267 glEnableClientState(GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV);
268 glEnableClientState(GL_ELEMENT_ARRAY_UNIFIED_NV);
269
270 glMakeNamedBufferResidentNV(vertex_buffer.handle, GL_READ_ONLY);
271 glGetNamedBufferParameterui64vNV(vertex_buffer.handle, GL_BUFFER_GPU_ADDRESS_NV,
272 &vertex_buffer_address);
273 }
274} 279}
275 280
276void RendererOpenGL::AddTelemetryFields() { 281void RendererOpenGL::AddTelemetryFields() {