diff --git a/GPU/Common/DepalettizeShaderCommon.cpp b/GPU/Common/DepalettizeShaderCommon.cpp
index 721fdf18a3..2a250a21de 100644
--- a/GPU/Common/DepalettizeShaderCommon.cpp
+++ b/GPU/Common/DepalettizeShaderCommon.cpp
@@ -27,7 +27,7 @@
#define WRITE p+=sprintf
// Uses integer instructions available since OpenGL 3.0. Suitable for ES 3.0 as well.
-void GenerateDepalShader300(char *buffer, GEBufferFormat pixelFormat) {
+void GenerateDepalShader300(char *buffer, GEBufferFormat pixelFormat, ShaderLanguage language) {
char *p = buffer;
if (gl_extensions.IsGLES) {
WRITE(p, "#version 300 es\n");
@@ -250,7 +250,8 @@ void GenerateDepalShader(char *buffer, GEBufferFormat pixelFormat, ShaderLanguag
GenerateDepalShaderFloat(buffer, pixelFormat, language);
break;
case GLSL_300:
- GenerateDepalShader300(buffer, pixelFormat);
+ case GLSL_VULKAN:
+ GenerateDepalShader300(buffer, pixelFormat, language);
break;
case HLSL_DX9:
GenerateDepalShaderFloat(buffer, pixelFormat, language);
diff --git a/GPU/Common/DepalettizeShaderCommon.h b/GPU/Common/DepalettizeShaderCommon.h
index 57a87c889c..c49a65cdbf 100644
--- a/GPU/Common/DepalettizeShaderCommon.h
+++ b/GPU/Common/DepalettizeShaderCommon.h
@@ -22,6 +22,7 @@
enum ShaderLanguage {
GLSL_140,
GLSL_300,
+ GLSL_VULKAN,
HLSL_DX9,
};
diff --git a/GPU/Common/FramebufferCommon.h b/GPU/Common/FramebufferCommon.h
index e236a64f6d..f9ebd1e3ad 100644
--- a/GPU/Common/FramebufferCommon.h
+++ b/GPU/Common/FramebufferCommon.h
@@ -51,6 +51,8 @@ namespace DX9 {
struct FBO_DX9;
}
+class VulkanFramebuffer;
+
struct VirtualFramebuffer {
int last_frame_used;
int last_frame_attached;
@@ -90,6 +92,7 @@ struct VirtualFramebuffer {
union {
FBO *fbo;
DX9::FBO_DX9 *fbo_dx9;
+ VulkanFramebuffer *fbo_vk;
};
u16 drawnWidth;
diff --git a/GPU/Common/TextureCacheCommon.h b/GPU/Common/TextureCacheCommon.h
index 95ff12aa60..c5da7b3af3 100644
--- a/GPU/Common/TextureCacheCommon.h
+++ b/GPU/Common/TextureCacheCommon.h
@@ -39,6 +39,8 @@ enum FramebufferNotification {
struct VirtualFramebuffer;
+class CachedTextureVulkan;
+
class TextureCacheCommon {
public:
TextureCacheCommon();
@@ -96,6 +98,7 @@ public:
union {
u32 textureName;
void *texturePtr;
+ CachedTextureVulkan *vkTex;
};
int invalidHint;
u32 fullhash;
diff --git a/GPU/GPU.vcxproj b/GPU/GPU.vcxproj
index 09c17b003a..9904be92b8 100644
--- a/GPU/GPU.vcxproj
+++ b/GPU/GPU.vcxproj
@@ -244,6 +244,7 @@
+
@@ -251,6 +252,7 @@
+
@@ -339,6 +341,7 @@
+
diff --git a/GPU/GPU.vcxproj.filters b/GPU/GPU.vcxproj.filters
index 4fe276f335..c48c83ecf7 100644
--- a/GPU/GPU.vcxproj.filters
+++ b/GPU/GPU.vcxproj.filters
@@ -210,6 +210,8 @@
+
+
@@ -404,5 +406,6 @@
+
\ No newline at end of file
diff --git a/GPU/Vulkan/DepalettizeShaderVulkan.h b/GPU/Vulkan/DepalettizeShaderVulkan.h
new file mode 100644
index 0000000000..ccee8ed7e9
--- /dev/null
+++ b/GPU/Vulkan/DepalettizeShaderVulkan.h
@@ -0,0 +1,61 @@
+#pragma once
+// Copyright (c) 2014- PPSSPP Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0 or later versions.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official git repository and contact information can be found at
+// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
+
+#include