From ea1525dab1bf7e9e56471b6d5fd50014bfeb4f96 Mon Sep 17 00:00:00 2001
From: Fernando Sahmkow <fsahmkow27@gmail.com>
Date: Tue, 21 May 2019 12:48:28 -0400
Subject: [PATCH] Fix rebase errors

---
 src/video_core/renderer_opengl/gl_rasterizer.cpp       | 10 ++++++++--
 .../renderer_opengl/gl_shader_disk_cache.cpp           |  2 +-
 src/video_core/texture_cache/surface_params.h          |  4 ++++
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index d613cb1dcc..8fe115aec1 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -822,8 +822,14 @@ TextureBufferUsage RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, c
         unit.sampler = sampler_cache.GetSampler(texture.tsc);
 
         if (const auto view{texture_cache.GetTextureSurface(texture, entry)}; view) {
-            view->ApplySwizzle(texture.tic.x_source, texture.tic.y_source, texture.tic.z_source,
-                               texture.tic.w_source);
+            if (view->GetSurfaceParams().IsBuffer()) {
+                // Record that this texture is a texture buffer.
+                texture_buffer_usage.set(bindpoint);
+            } else {
+                // Apply swizzle to textures that are not buffers.
+                view->ApplySwizzle(texture.tic.x_source, texture.tic.y_source, texture.tic.z_source,
+                                   texture.tic.w_source);
+            }
             state.texture_units[current_bindpoint].texture = view->GetTexture();
         } else {
             // Can occur when texture addr is null or its memory is unmapped/invalid
diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
index 51d9aae946..5ec911adce 100644
--- a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
@@ -291,7 +291,7 @@ std::optional<ShaderDiskCacheDecompiled> ShaderDiskCacheOpenGL::LoadDecompiledEn
     }
 
     ShaderDiskCacheDecompiled entry;
-    entry.code = std::move(code);
+    entry.code = std::string(reinterpret_cast<const char*>(code.data()), code_size);
 
     u32 const_buffers_count{};
     if (!LoadObjectFromPrecompiled(const_buffers_count)) {
diff --git a/src/video_core/texture_cache/surface_params.h b/src/video_core/texture_cache/surface_params.h
index 13a08a60ff..d9aa0b521c 100644
--- a/src/video_core/texture_cache/surface_params.h
+++ b/src/video_core/texture_cache/surface_params.h
@@ -167,6 +167,10 @@ public:
         return VideoCore::Surface::GetFormatCompressionType(pixel_format);
     }
 
+    bool IsBuffer() const {
+        return target == VideoCore::Surface::SurfaceTarget::TextureBuffer;
+    }
+
     std::string TargetName() const;
 
     bool is_tiled;