mirror of https://github.com/encounter/SDL.git
Remove gles2 vita render
This commit is contained in:
parent
058bbe0286
commit
ca969eb2be
|
@ -2118,7 +2118,6 @@ elseif(VITA)
|
||||||
|
|
||||||
if(HAVE_PIGS_IN_BLANKET_H)
|
if(HAVE_PIGS_IN_BLANKET_H)
|
||||||
set(SDL_VIDEO_OPENGL_ES2 1)
|
set(SDL_VIDEO_OPENGL_ES2 1)
|
||||||
set(SDL_VIDEO_RENDER_VITA_GLES2 1)
|
|
||||||
list(APPEND EXTRA_LIBS
|
list(APPEND EXTRA_LIBS
|
||||||
pib
|
pib
|
||||||
)
|
)
|
||||||
|
|
|
@ -416,7 +416,6 @@
|
||||||
#cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
|
#cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@
|
||||||
#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
|
#cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@
|
||||||
#cmakedefine SDL_VIDEO_RENDER_METAL @SDL_VIDEO_RENDER_METAL@
|
#cmakedefine SDL_VIDEO_RENDER_METAL @SDL_VIDEO_RENDER_METAL@
|
||||||
#cmakedefine SDL_VIDEO_RENDER_VITA_GLES2 @SDL_VIDEO_RENDER_VITA_GLES2@
|
|
||||||
#cmakedefine SDL_VIDEO_RENDER_VITA_GXM @SDL_VIDEO_RENDER_VITA_GXM@
|
#cmakedefine SDL_VIDEO_RENDER_VITA_GXM @SDL_VIDEO_RENDER_VITA_GXM@
|
||||||
|
|
||||||
/* Enable OpenGL support */
|
/* Enable OpenGL support */
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
/*
|
|
||||||
Simple DirectMedia Layer
|
|
||||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
SDL_PROC(void, glActiveTexture, (GLenum))
|
|
||||||
SDL_PROC(void, glAttachShader, (GLuint, GLuint))
|
|
||||||
SDL_PROC(void, glBindAttribLocation, (GLuint, GLuint, const char *))
|
|
||||||
SDL_PROC(void, glBindTexture, (GLenum, GLuint))
|
|
||||||
SDL_PROC(void, glBlendEquationSeparate, (GLenum, GLenum))
|
|
||||||
SDL_PROC(void, glBlendFuncSeparate, (GLenum, GLenum, GLenum, GLenum))
|
|
||||||
SDL_PROC(void, glClear, (GLbitfield))
|
|
||||||
SDL_PROC(void, glClearColor, (GLclampf, GLclampf, GLclampf, GLclampf))
|
|
||||||
SDL_PROC(void, glCompileShader, (GLuint))
|
|
||||||
SDL_PROC(GLuint, glCreateProgram, (void))
|
|
||||||
SDL_PROC(GLuint, glCreateShader, (GLenum))
|
|
||||||
SDL_PROC(void, glDeleteProgram, (GLuint))
|
|
||||||
SDL_PROC(void, glDeleteShader, (GLuint))
|
|
||||||
SDL_PROC(void, glDeleteTextures, (GLsizei, const GLuint *))
|
|
||||||
SDL_PROC(void, glDisable, (GLenum))
|
|
||||||
SDL_PROC(void, glDisableVertexAttribArray, (GLuint))
|
|
||||||
SDL_PROC(void, glDrawArrays, (GLenum, GLint, GLsizei))
|
|
||||||
SDL_PROC(void, glEnable, (GLenum))
|
|
||||||
SDL_PROC(void, glEnableVertexAttribArray, (GLuint))
|
|
||||||
SDL_PROC(void, glFinish, (void))
|
|
||||||
SDL_PROC(void, glGenFramebuffers, (GLsizei, GLuint *))
|
|
||||||
SDL_PROC(void, glGenTextures, (GLsizei, GLuint *))
|
|
||||||
SDL_PROC(void, glGetBooleanv, (GLenum, GLboolean *))
|
|
||||||
SDL_PROC(const GLubyte *, glGetString, (GLenum))
|
|
||||||
SDL_PROC(GLenum, glGetError, (void))
|
|
||||||
SDL_PROC(void, glGetIntegerv, (GLenum, GLint *))
|
|
||||||
SDL_PROC(void, glGetProgramiv, (GLuint, GLenum, GLint *))
|
|
||||||
SDL_PROC(void, glGetShaderInfoLog, (GLuint, GLsizei, GLsizei *, char *))
|
|
||||||
SDL_PROC(void, glGetShaderiv, (GLuint, GLenum, GLint *))
|
|
||||||
SDL_PROC(GLint, glGetUniformLocation, (GLuint, const char *))
|
|
||||||
SDL_PROC(void, glLinkProgram, (GLuint))
|
|
||||||
SDL_PROC(void, glPixelStorei, (GLenum, GLint))
|
|
||||||
SDL_PROC(void, glReadPixels, (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid*))
|
|
||||||
SDL_PROC(void, glScissor, (GLint, GLint, GLsizei, GLsizei))
|
|
||||||
SDL_PROC(void, glShaderBinary, (GLsizei, const GLuint *, GLenum, const void *, GLsizei))
|
|
||||||
SDL_PROC(void, glShaderSource, (GLuint, GLsizei, const GLchar* const*, const GLint *))
|
|
||||||
SDL_PROC(void, glTexImage2D, (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *))
|
|
||||||
SDL_PROC(void, glTexParameteri, (GLenum, GLenum, GLint))
|
|
||||||
SDL_PROC(void, glTexSubImage2D, (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *))
|
|
||||||
SDL_PROC(void, glUniform1i, (GLint, GLint))
|
|
||||||
SDL_PROC(void, glUniform4f, (GLint, GLfloat, GLfloat, GLfloat, GLfloat))
|
|
||||||
SDL_PROC(void, glUniformMatrix4fv, (GLint, GLsizei, GLboolean, const GLfloat *))
|
|
||||||
SDL_PROC(void, glUseProgram, (GLuint))
|
|
||||||
SDL_PROC(void, glVertexAttribPointer, (GLuint, GLint, GLenum, GLboolean, GLsizei, const void *))
|
|
||||||
SDL_PROC(void, glViewport, (GLint, GLint, GLsizei, GLsizei))
|
|
||||||
SDL_PROC(void, glBindFramebuffer, (GLenum, GLuint))
|
|
||||||
SDL_PROC(void, glFramebufferTexture2D, (GLenum, GLenum, GLenum, GLuint, GLint))
|
|
||||||
SDL_PROC(GLenum, glCheckFramebufferStatus, (GLenum))
|
|
||||||
SDL_PROC(void, glDeleteFramebuffers, (GLsizei, const GLuint *))
|
|
||||||
SDL_PROC(GLint, glGetAttribLocation, (GLuint, const GLchar *))
|
|
||||||
SDL_PROC(void, glGetProgramInfoLog, (GLuint, GLsizei, GLsizei*, GLchar*))
|
|
||||||
SDL_PROC(void, glGenBuffers, (GLsizei, GLuint *))
|
|
||||||
SDL_PROC(void, glDeleteBuffers, (GLsizei, const GLuint *))
|
|
||||||
SDL_PROC(void, glBindBuffer, (GLenum, GLuint))
|
|
||||||
SDL_PROC(void, glBufferData, (GLenum, GLsizeiptr, const GLvoid *, GLenum))
|
|
||||||
SDL_PROC(void, glBufferSubData, (GLenum, GLintptr, GLsizeiptr, const GLvoid *))
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,563 +0,0 @@
|
||||||
/*
|
|
||||||
Simple DirectMedia Layer
|
|
||||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
#include "../../SDL_internal.h"
|
|
||||||
|
|
||||||
#if SDL_VIDEO_RENDER_VITA_GLES2 && !SDL_RENDER_DISABLED
|
|
||||||
|
|
||||||
#include "SDL_video.h"
|
|
||||||
#include "SDL_opengles2.h"
|
|
||||||
#include "SDL_shaders_gles2vita.h"
|
|
||||||
#include "SDL_stdinc.h"
|
|
||||||
|
|
||||||
/* While Vita is gles2-compliant, shaders should be in Cg format, not glsl */
|
|
||||||
|
|
||||||
/*************************************************************************************************
|
|
||||||
* Vertex/fragment shader source *
|
|
||||||
*************************************************************************************************/
|
|
||||||
/* Notes on a_angle:
|
|
||||||
* It is a vector containing sin and cos for rotation matrix
|
|
||||||
* To get correct rotation for most cases when a_angle is disabled cos
|
|
||||||
value is decremented by 1.0 to get proper output with 0.0 which is
|
|
||||||
default value
|
|
||||||
*/
|
|
||||||
static const Uint8 VITA_GLES2_VertexSrc_Default_[] = " \
|
|
||||||
struct _Output { \
|
|
||||||
float2 v_texCoord : TEXCOORD0; \
|
|
||||||
float4 position : POSITION; \
|
|
||||||
float pointsize : PSIZE; \
|
|
||||||
}; \
|
|
||||||
\
|
|
||||||
_Output main( \
|
|
||||||
uniform float4x4 u_projection, \
|
|
||||||
float2 a_position, \
|
|
||||||
float2 a_texCoord, \
|
|
||||||
float2 a_angle, \
|
|
||||||
float2 a_center \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
_Output OUT; \
|
|
||||||
\
|
|
||||||
float s = a_angle[0]; \
|
|
||||||
float c = a_angle[1] + 1.0; \
|
|
||||||
float2x2 rotationMatrix = float2x2(c, s, -s, c); \
|
|
||||||
float2 position = mul((a_position - a_center) + a_center, rotationMatrix); \
|
|
||||||
\
|
|
||||||
OUT.v_texCoord = a_texCoord; \
|
|
||||||
OUT.position = mul(float4(position, 0.0, 1.0), u_projection);\
|
|
||||||
OUT.pointsize = 1.0; \
|
|
||||||
return OUT; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_SolidSrc_[] = " \
|
|
||||||
float4 main(uniform float4 u_color : COLOR) : COLOR \
|
|
||||||
{ \
|
|
||||||
return u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureABGRSrc_[] = " \
|
|
||||||
float4 main(uniform sampler2D u_texture, uniform float4 u_color : COLOR, float2 v_texCoord : TEXCOORD0 ) : COLOR \
|
|
||||||
{ \
|
|
||||||
float4 color = tex2D(u_texture, v_texCoord); \
|
|
||||||
return color * u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
/* ARGB to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureARGBSrc_[] = " \
|
|
||||||
float4 main(uniform sampler2D u_texture, uniform float4 u_color : COLOR, float2 v_texCoord : TEXCOORD0 ) : COLOR \
|
|
||||||
{ \
|
|
||||||
float4 abgr = tex2D(u_texture, v_texCoord); \
|
|
||||||
float4 color = abgr; \
|
|
||||||
color.r = abgr.b; \
|
|
||||||
color.b = abgr.r; \
|
|
||||||
return color * u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
/* RGB to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureRGBSrc_[] = " \
|
|
||||||
float4 main(uniform sampler2D u_texture, uniform float4 u_color : COLOR, float2 v_texCoord : TEXCOORD0 ) : COLOR \
|
|
||||||
{ \
|
|
||||||
float4 abgr = tex2D(u_texture, v_texCoord); \
|
|
||||||
float4 color = abgr; \
|
|
||||||
color.r = abgr.b; \
|
|
||||||
color.b = abgr.r; \
|
|
||||||
color.a = 1.0; \
|
|
||||||
return color * u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
/* BGR to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureBGRSrc_[] = " \
|
|
||||||
float4 main(uniform sampler2D u_texture, uniform float4 u_color : COLOR, float2 v_texCoord : TEXCOORD0 ) : COLOR \
|
|
||||||
{ \
|
|
||||||
float4 abgr = tex2D(u_texture, v_texCoord); \
|
|
||||||
float4 color = abgr; \
|
|
||||||
color.a = 1.0; \
|
|
||||||
return color * u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
// VITA : TODO
|
|
||||||
|
|
||||||
#define JPEG_SHADER_CONSTANTS \
|
|
||||||
"// YUV offset \n" \
|
|
||||||
"const vec3 offset = vec3(0, -0.501960814, -0.501960814);\n" \
|
|
||||||
"\n" \
|
|
||||||
"// RGB coefficients \n" \
|
|
||||||
"const mat3 matrix = mat3( 1, 1, 1,\n" \
|
|
||||||
" 0, -0.3441, 1.772,\n" \
|
|
||||||
" 1.402, -0.7141, 0);\n" \
|
|
||||||
|
|
||||||
#define BT601_SHADER_CONSTANTS \
|
|
||||||
"// YUV offset \n" \
|
|
||||||
"const vec3 offset = vec3(-0.0627451017, -0.501960814, -0.501960814);\n" \
|
|
||||||
"\n" \
|
|
||||||
"// RGB coefficients \n" \
|
|
||||||
"const mat3 matrix = mat3( 1.1644, 1.1644, 1.1644,\n" \
|
|
||||||
" 0, -0.3918, 2.0172,\n" \
|
|
||||||
" 1.596, -0.813, 0);\n" \
|
|
||||||
|
|
||||||
#define BT709_SHADER_CONSTANTS \
|
|
||||||
"// YUV offset \n" \
|
|
||||||
"const vec3 offset = vec3(-0.0627451017, -0.501960814, -0.501960814);\n" \
|
|
||||||
"\n" \
|
|
||||||
"// RGB coefficients \n" \
|
|
||||||
"const mat3 matrix = mat3( 1.1644, 1.1644, 1.1644,\n" \
|
|
||||||
" 0, -0.2132, 2.1124,\n" \
|
|
||||||
" 1.7927, -0.5329, 0);\n" \
|
|
||||||
|
|
||||||
|
|
||||||
#define YUV_SHADER_PROLOGUE \
|
|
||||||
"precision mediump float;\n" \
|
|
||||||
"uniform sampler2D u_texture;\n" \
|
|
||||||
"uniform sampler2D u_texture_u;\n" \
|
|
||||||
"uniform sampler2D u_texture_v;\n" \
|
|
||||||
"uniform vec4 u_color;\n" \
|
|
||||||
"varying vec2 v_texCoord;\n" \
|
|
||||||
"\n" \
|
|
||||||
|
|
||||||
#define YUV_SHADER_BODY \
|
|
||||||
"\n" \
|
|
||||||
"void main()\n" \
|
|
||||||
"{\n" \
|
|
||||||
" mediump vec3 yuv;\n" \
|
|
||||||
" lowp vec3 rgb;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Get the YUV values \n" \
|
|
||||||
" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
|
|
||||||
" yuv.y = texture2D(u_texture_u, v_texCoord).r;\n" \
|
|
||||||
" yuv.z = texture2D(u_texture_v, v_texCoord).r;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Do the color transform \n" \
|
|
||||||
" yuv += offset;\n" \
|
|
||||||
" rgb = matrix * yuv;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // That was easy. :) \n" \
|
|
||||||
" gl_FragColor = vec4(rgb, 1);\n" \
|
|
||||||
" gl_FragColor *= u_color;\n" \
|
|
||||||
"}" \
|
|
||||||
|
|
||||||
#define NV12_SHADER_BODY \
|
|
||||||
"\n" \
|
|
||||||
"void main()\n" \
|
|
||||||
"{\n" \
|
|
||||||
" mediump vec3 yuv;\n" \
|
|
||||||
" lowp vec3 rgb;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Get the YUV values \n" \
|
|
||||||
" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
|
|
||||||
" yuv.yz = texture2D(u_texture_u, v_texCoord).ra;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Do the color transform \n" \
|
|
||||||
" yuv += offset;\n" \
|
|
||||||
" rgb = matrix * yuv;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // That was easy. :) \n" \
|
|
||||||
" gl_FragColor = vec4(rgb, 1);\n" \
|
|
||||||
" gl_FragColor *= u_color;\n" \
|
|
||||||
"}" \
|
|
||||||
|
|
||||||
#define NV21_SHADER_BODY \
|
|
||||||
"\n" \
|
|
||||||
"void main()\n" \
|
|
||||||
"{\n" \
|
|
||||||
" mediump vec3 yuv;\n" \
|
|
||||||
" lowp vec3 rgb;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Get the YUV values \n" \
|
|
||||||
" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
|
|
||||||
" yuv.yz = texture2D(u_texture_u, v_texCoord).ar;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // Do the color transform \n" \
|
|
||||||
" yuv += offset;\n" \
|
|
||||||
" rgb = matrix * yuv;\n" \
|
|
||||||
"\n" \
|
|
||||||
" // That was easy. :) \n" \
|
|
||||||
" gl_FragColor = vec4(rgb, 1);\n" \
|
|
||||||
" gl_FragColor *= u_color;\n" \
|
|
||||||
"}" \
|
|
||||||
|
|
||||||
/* YUV to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureYUVJPEGSrc_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
JPEG_SHADER_CONSTANTS \
|
|
||||||
YUV_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureYUVBT601Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT601_SHADER_CONSTANTS \
|
|
||||||
YUV_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureYUVBT709Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT709_SHADER_CONSTANTS \
|
|
||||||
YUV_SHADER_BODY \
|
|
||||||
;
|
|
||||||
|
|
||||||
/* NV12 to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV12JPEGSrc_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
JPEG_SHADER_CONSTANTS \
|
|
||||||
NV12_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV12BT601Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT601_SHADER_CONSTANTS \
|
|
||||||
NV12_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV12BT709Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT709_SHADER_CONSTANTS \
|
|
||||||
NV12_SHADER_BODY \
|
|
||||||
;
|
|
||||||
|
|
||||||
/* NV21 to ABGR conversion */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV21JPEGSrc_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
JPEG_SHADER_CONSTANTS \
|
|
||||||
NV21_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV21BT601Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT601_SHADER_CONSTANTS \
|
|
||||||
NV21_SHADER_BODY \
|
|
||||||
;
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureNV21BT709Src_[] = \
|
|
||||||
YUV_SHADER_PROLOGUE \
|
|
||||||
BT709_SHADER_CONSTANTS \
|
|
||||||
NV21_SHADER_BODY \
|
|
||||||
;
|
|
||||||
|
|
||||||
/* Custom Android video format texture */
|
|
||||||
static const Uint8 VITA_GLES2_FragmentSrc_TextureExternalOESSrc_[] = " \
|
|
||||||
#extension GL_OES_EGL_image_external : require\n\
|
|
||||||
precision mediump float; \
|
|
||||||
uniform samplerExternalOES u_texture; \
|
|
||||||
uniform vec4 u_color; \
|
|
||||||
varying vec2 v_texCoord; \
|
|
||||||
\
|
|
||||||
void main() \
|
|
||||||
{ \
|
|
||||||
gl_FragColor = texture2D(u_texture, v_texCoord); \
|
|
||||||
gl_FragColor *= u_color; \
|
|
||||||
} \
|
|
||||||
";
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_VertexSrc_Default = {
|
|
||||||
GL_VERTEX_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_VertexSrc_Default_),
|
|
||||||
VITA_GLES2_VertexSrc_Default_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_SolidSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_SolidSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_SolidSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureABGRSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureABGRSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureABGRSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureARGBSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureARGBSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureARGBSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureRGBSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureRGBSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureRGBSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureBGRSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureBGRSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureBGRSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureYUVJPEGSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureYUVJPEGSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureYUVJPEGSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureYUVBT601Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureYUVBT601Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureYUVBT601Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureYUVBT709Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureYUVBT709Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureYUVBT709Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV12JPEGSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV12JPEGSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV12JPEGSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV12BT601Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV12BT601Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV12BT601Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV21BT709Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV21BT709Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV21BT709Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV21JPEGSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV21JPEGSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV21JPEGSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV21BT601Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV21BT601Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV21BT601Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureNV12BT709Src = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureNV12BT709Src_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureNV12BT709Src_
|
|
||||||
};
|
|
||||||
|
|
||||||
static const VITA_GLES2_ShaderInstance VITA_GLES2_FragmentSrc_TextureExternalOESSrc = {
|
|
||||||
GL_FRAGMENT_SHADER,
|
|
||||||
VITA_GLES2_SOURCE_SHADER,
|
|
||||||
sizeof(VITA_GLES2_FragmentSrc_TextureExternalOESSrc_),
|
|
||||||
VITA_GLES2_FragmentSrc_TextureExternalOESSrc_
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************************************
|
|
||||||
* Vertex/fragment shader definitions *
|
|
||||||
*************************************************************************************************/
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_VertexShader_Default = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_VertexSrc_Default
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_SolidSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_SolidSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureABGRSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureABGRSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureARGBSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureARGBSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureRGBSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureRGBSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureBGRSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureBGRSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureYUVJPEGSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureYUVJPEGSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureYUVBT601Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureYUVBT601Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureYUVBT709Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureYUVBT709Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV12JPEGSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV12JPEGSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV12BT601Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV12BT601Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV12BT709Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV12BT709Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV21JPEGSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV21JPEGSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV21BT601Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV21BT601Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureNV21BT709Src = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureNV21BT709Src
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static VITA_GLES2_Shader VITA_GLES2_FragmentShader_TextureExternalOESSrc = {
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
&VITA_GLES2_FragmentSrc_TextureExternalOESSrc
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************************************
|
|
||||||
* Shader selector *
|
|
||||||
*************************************************************************************************/
|
|
||||||
|
|
||||||
const VITA_GLES2_Shader *VITA_GLES2_GetShader(VITA_GLES2_ShaderType type)
|
|
||||||
{
|
|
||||||
switch (type) {
|
|
||||||
case VITA_GLES2_SHADER_VERTEX_DEFAULT:
|
|
||||||
return &VITA_GLES2_VertexShader_Default;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_SOLID_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_SolidSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureABGRSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureARGBSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureRGBSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureBGRSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_JPEG_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureYUVJPEGSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT601_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureYUVBT601Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT709_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureYUVBT709Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_JPEG_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV12JPEGSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT601_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV12BT601Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT709_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV12BT709Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_JPEG_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV21JPEGSrc;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT601_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV21BT601Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT709_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureNV21BT709Src;
|
|
||||||
case VITA_GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES_SRC:
|
|
||||||
return &VITA_GLES2_FragmentShader_TextureExternalOESSrc;
|
|
||||||
default:
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_VITA_GLES2 && !SDL_RENDER_DISABLED */
|
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
|
|
@ -1,70 +0,0 @@
|
||||||
/*
|
|
||||||
Simple DirectMedia Layer
|
|
||||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
#include "../../SDL_internal.h"
|
|
||||||
|
|
||||||
#ifndef SDL_shaders_gles2vita_h_
|
|
||||||
#define SDL_shaders_gles2vita_h_
|
|
||||||
|
|
||||||
#if SDL_VIDEO_RENDER_VITA_GLES2
|
|
||||||
|
|
||||||
typedef struct VITA_GLES2_ShaderInstance
|
|
||||||
{
|
|
||||||
GLenum type;
|
|
||||||
GLenum format;
|
|
||||||
int length;
|
|
||||||
const void *data;
|
|
||||||
} VITA_GLES2_ShaderInstance;
|
|
||||||
|
|
||||||
typedef struct VITA_GLES2_Shader
|
|
||||||
{
|
|
||||||
int instance_count;
|
|
||||||
const VITA_GLES2_ShaderInstance *instances[4];
|
|
||||||
} VITA_GLES2_Shader;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
VITA_GLES2_SHADER_VERTEX_DEFAULT,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_SOLID_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_JPEG_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT601_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT709_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_JPEG_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT601_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT709_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_JPEG_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT601_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT709_SRC,
|
|
||||||
VITA_GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES_SRC
|
|
||||||
} VITA_GLES2_ShaderType;
|
|
||||||
|
|
||||||
#define VITA_GLES2_SOURCE_SHADER (GLenum)-1
|
|
||||||
|
|
||||||
const VITA_GLES2_Shader *VITA_GLES2_GetShader(VITA_GLES2_ShaderType type);
|
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_VITA_GLES2 */
|
|
||||||
|
|
||||||
#endif /* SDL_shaders_gles2vita_h_ */
|
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
|
Loading…
Reference in New Issue