From 73b2dc6d4f4fa5fbb70af45dc5d3c58b60750066 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 18 Jul 2019 01:04:18 -0300 Subject: [PATCH 1/5] gl_texture_cache: Add missing break in CreateTexture --- src/video_core/renderer_opengl/gl_texture_cache.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index b1f6bc7c20..4a7f8ae3a5 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -209,6 +209,7 @@ OGLTexture CreateTexture(const SurfaceParams& params, GLenum target, GLenum inte glNamedBufferStorage(texture_buffer.handle, params.width * params.GetBytesPerPixel(), nullptr, GL_DYNAMIC_STORAGE_BIT); glTextureBuffer(texture.handle, internal_format, texture_buffer.handle); + break; case SurfaceTarget::Texture2D: case SurfaceTarget::TextureCubemap: glTextureStorage2D(texture.handle, params.emulated_levels, internal_format, params.width, From 84027f480811a3cfbe1a5f526f401aec8b5eb533 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 18 Jul 2019 01:06:26 -0300 Subject: [PATCH 2/5] gl_texture_cache: Do not set texture parameters to buffers --- src/video_core/renderer_opengl/gl_texture_cache.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index 4a7f8ae3a5..a848d07615 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -185,6 +185,9 @@ GLint GetSwizzleSource(SwizzleSource source) { } void ApplyTextureDefaults(const SurfaceParams& params, GLuint texture) { + if (params.IsBuffer()) { + return; + } glTextureParameteri(texture, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTextureParameteri(texture, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTextureParameteri(texture, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); From e7bdf8b22a94c1d7066ef967788e9b7ffe481283 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 18 Jul 2019 01:07:08 -0300 Subject: [PATCH 3/5] textures: Fix texture buffer size calculation --- src/video_core/textures/texture.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h index e3be018b97..e36bc2c04e 100644 --- a/src/video_core/textures/texture.h +++ b/src/video_core/textures/texture.h @@ -213,7 +213,7 @@ struct TICEntry { if (header_version != TICHeaderVersion::OneDBuffer) { return width_minus_1 + 1; } - return (buffer_high_width_minus_one << 16) | buffer_low_width_minus_one; + return ((buffer_high_width_minus_one << 16) | buffer_low_width_minus_one) + 1; } u32 Height() const { From 87909d327f3625b40d8edc0bcde087306cbc03c7 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 18 Jul 2019 01:16:15 -0300 Subject: [PATCH 4/5] gl_shader_cache: Fix newline on buffer preprocessor definitions --- src/video_core/renderer_opengl/gl_shader_cache.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 32dd9eae79..ca2c43494e 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -218,17 +218,21 @@ CachedProgram SpecializeShader(const std::string& code, const GLShader::ShaderEn if (!texture_buffer_usage.test(i)) { continue; } - source += fmt::format("#define SAMPLER_{}_IS_BUFFER", i); + source += fmt::format("#define SAMPLER_{}_IS_BUFFER\n", i); + } + if (texture_buffer_usage.any()) { + source += '\n'; } if (program_type == Maxwell::ShaderProgram::Geometry) { const auto [glsl_topology, debug_name, max_vertices] = GetPrimitiveDescription(primitive_mode); - source += "layout (" + std::string(glsl_topology) + ") in;\n"; + source += "layout (" + std::string(glsl_topology) + ") in;\n\n"; source += "#define MAX_VERTEX_INPUT " + std::to_string(max_vertices) + '\n'; } + source += '\n'; source += code; OGLShader shader; From 74632c76ce32dc81c39a5cef4fafa722fb5e9ab3 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 18 Jul 2019 01:16:44 -0300 Subject: [PATCH 5/5] gl_shader_decompiler: Rename bufferImage to imageBuffer The online OpenGL documentation is wrong. The type definition is imageBuffer. --- src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 119073776a..7266bdf288 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -561,7 +561,7 @@ private: case Tegra::Shader::ImageType::Texture1D: return "image1D"; case Tegra::Shader::ImageType::TextureBuffer: - return "bufferImage"; + return "imageBuffer"; case Tegra::Shader::ImageType::Texture1DArray: return "image1DArray"; case Tegra::Shader::ImageType::Texture2D: