diff --git a/cmake/FindGLES2.cmake b/cmake/FindGLES2.cmake new file mode 100644 index 0000000000..4bfa9d8477 --- /dev/null +++ b/cmake/FindGLES2.cmake @@ -0,0 +1,27 @@ +# Try to find GLESV2 +# Once done, this will define +# +# GLESV2_FOUND - system has GLESV2 +# GLESV2_INCLUDE_DIR - the GLESV2 include directories +# GLESV2_LIBRARIES - link these to use GLESV2 + +if(GLESV2_INCLUDE_DIR AND GLESV2_LIBRARIES) + set(GLESV2_FIND_QUIETLY TRUE) +endif(GLESV2_INCLUDE_DIR AND GLESV2_LIBRARIES) + +INCLUDE(CheckCXXSymbolExists) + +# include dir +find_path(GLESV2_INCLUDE_DIR GLES3/gl3ext.h) + +# finally the library itself +find_library(libGLESV2 NAMES GLESv2) +set(GLESV2_LIBRARIES ${libGLESV2}) + +# handle the QUIETLY and REQUIRED arguments and set GLESV2_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GLESV2 DEFAULT_MSG GLESV2_LIBRARIES GLESV2_INCLUDE_DIR) + +mark_as_advanced(GLESV2_LIBRARIES GLESV2_INCLUDE_DIR) + diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake index 025cc65210..ec805699a4 100644 --- a/cmake/SearchForStuff.cmake +++ b/cmake/SearchForStuff.cmake @@ -56,6 +56,7 @@ include(FindAio) include(FindCg) #endif(NOT GLSL_API) include(FindEGL) +include(FindGLES2) include(FindGlew) include(FindLibc) include(FindPortAudio) @@ -115,6 +116,10 @@ if(GLEW_FOUND) include_directories(${GLEW_INCLUDE_DIR}) endif(GLEW_FOUND) +if(GLESV2_FOUND) + include_directories(${GLESV2_INCLUDE_DIR}) +endif() + if(OPENGL_FOUND) include_directories(${OPENGL_INCLUDE_DIR}) endif(OPENGL_FOUND) diff --git a/plugins/GSdx/CMakeLists.txt b/plugins/GSdx/CMakeLists.txt index 667c9694f1..72d9c2fa9e 100644 --- a/plugins/GSdx/CMakeLists.txt +++ b/plugins/GSdx/CMakeLists.txt @@ -44,7 +44,7 @@ if(XDG_STD) add_definitions(-DXDG_STD) endif(XDG_STD) -if(GLES_API) +if(GLES_API AND GLESV2_FOUND) add_definitions(-DENABLE_GLES) endif() @@ -193,10 +193,9 @@ endif() add_library(${Output} SHARED ${GSdxSources} ${GSdxHeaders}) target_link_libraries(${Output} ${X11_LIBRARIES}) -message(INFO "DEBUG ${OPENGL_LIBRARIES}") -if (GLES) - target_link_libraries(${Output} /usr/lib/i386-linux-gnu/libGLU.so;/usr/lib/i386-linux-gnu/libGLESv2.so;/usr/lib/i386-linux-gnu/libSM.so;/usr/lib/i386-linux-gnu/libICE.so;/usr/lib/i386-linux-gnu/libX11.so;/usr/lib/i386-linux-gnu/libXext.so) +if(GLES_API AND GLESV2_FOUND) + target_link_libraries(${Output} ${GLESV2_LIBRARIES}) else() target_link_libraries(${Output} ${OPENGL_LIBRARIES}) endif() diff --git a/plugins/GSdx/GLLoader.cpp b/plugins/GSdx/GLLoader.cpp index 60d817791e..e54dd4dd85 100644 --- a/plugins/GSdx/GLLoader.cpp +++ b/plugins/GSdx/GLLoader.cpp @@ -23,6 +23,7 @@ #include "GLLoader.h" #include "GSdx.h" +#ifndef ENABLE_GLES PFNGLACTIVETEXTUREPROC gl_ActiveTexture = NULL; PFNGLBLENDCOLORPROC gl_BlendColor = NULL; PFNGLATTACHSHADERPROC gl_AttachShader = NULL; @@ -98,6 +99,7 @@ PFNGLPROGRAMUNIFORM1IPROC gl_ProgramUniform1i = NULL; PFNGLGETUNIFORMBLOCKINDEXPROC gl_GetUniformBlockIndex = NULL; PFNGLUNIFORMBLOCKBINDINGPROC gl_UniformBlockBinding = NULL; PFNGLGETUNIFORMLOCATIONPROC gl_GetUniformLocation = NULL; +#endif namespace GLLoader { diff --git a/plugins/GSdx/GLLoader.h b/plugins/GSdx/GLLoader.h index f914e0a3e9..73fe4f04ea 100644 --- a/plugins/GSdx/GLLoader.h +++ b/plugins/GSdx/GLLoader.h @@ -21,6 +21,7 @@ #pragma once +#ifndef ENABLE_GLES extern PFNGLACTIVETEXTUREPROC gl_ActiveTexture; extern PFNGLBLENDCOLORPROC gl_BlendColor; extern PFNGLATTACHSHADERPROC gl_AttachShader; @@ -96,6 +97,83 @@ extern PFNGLPROGRAMUNIFORM1IPROC gl_ProgramUniform1i; extern PFNGLGETUNIFORMBLOCKINDEXPROC gl_GetUniformBlockIndex; extern PFNGLUNIFORMBLOCKBINDINGPROC gl_UniformBlockBinding; extern PFNGLGETUNIFORMLOCATIONPROC gl_GetUniformLocation; +#else +#define gl_ActiveTexture glActiveTexture +#define gl_BlendColor glBlendColor +#define gl_AttachShader glAttachShader +#define gl_BindBuffer glBindBuffer +#define gl_BindBufferBase glBindBufferBase +#define gl_BindFragDataLocationIndexed glBindFragDataLocationIndexed +#define gl_BindFramebuffer glBindFramebuffer +#define gl_BindSampler glBindSampler +#define gl_BindVertexArray glBindVertexArray +#define gl_BlendEquationSeparate glBlendEquationSeparate +#define gl_BlendFuncSeparate glBlendFuncSeparate +#define gl_BlitFramebuffer glBlitFramebuffer +#define gl_BufferData glBufferData +#define gl_CheckFramebufferStatus glCheckFramebufferStatus +#define gl_ClearBufferfv glClearBufferfv +#define gl_ClearBufferiv glClearBufferiv +#define gl_CompileShader glCompileShader +#define gl_CopyImageSubDataNV glCopyImageSubDataNV +#define gl_CreateProgram glCreateProgram +#define gl_CreateShader glCreateShader +#define gl_CreateShaderProgramv glCreateShaderProgramv +#define gl_DeleteBuffers glDeleteBuffers +#define gl_DeleteFramebuffers glDeleteFramebuffers +#define gl_DeleteProgram glDeleteProgram +#define gl_DeleteSamplers glDeleteSamplers +#define gl_DeleteShader glDeleteShader +#define gl_DeleteVertexArrays glDeleteVertexArrays +#define gl_DetachShader glDetachShader +#define gl_DrawBuffers glDrawBuffers +#define gl_DrawElementsBaseVertex glDrawElementsBaseVertex +#define gl_EnableVertexAttribArray glEnableVertexAttribArray +#define gl_FramebufferRenderbuffer glFramebufferRenderbuffer +#define gl_FramebufferTexture2D glFramebufferTexture2D +#define gl_GenBuffers glGenBuffers +#define gl_GenFramebuffers glGenFramebuffers +#define gl_GenSamplers glGenSamplers +#define gl_GenVertexArrays glGenVertexArrays +#define gl_GetBufferParameteriv glGetBufferParameteriv +#define gl_GetDebugMessageLogARB glGetDebugMessageLogARB +#define gl_GetFragDataIndex glGetFragDataIndex +#define gl_GetFragDataLocation glGetFragDataLocation +#define gl_GetProgramInfoLog glGetProgramInfoLog +#define gl_GetProgramiv glGetProgramiv +#define gl_GetShaderiv glGetShaderiv +#define gl_GetStringi glGetStringi +#define gl_IsFramebuffer glIsFramebuffer +#define gl_LinkProgram glLinkProgram +#define gl_MapBuffer glMapBuffer +#define gl_MapBufferRange glMapBufferRange +#define gl_ProgramParameteri glProgramParameteri +#define gl_SamplerParameterf glSamplerParameterf +#define gl_SamplerParameteri glSamplerParameteri +#define gl_ShaderSource glShaderSource +#define gl_Uniform1i glUniform1i +#define gl_UnmapBuffer glUnmapBuffer +#define gl_UseProgramStages glUseProgramStages +#define gl_VertexAttribIPointer glVertexAttribIPointer +#define gl_VertexAttribPointer glVertexAttribPointer +#define gl_TexStorage2D glTexStorage2D +#define gl_BufferSubData glBufferSubData + +#define gl_BindProgramPipeline glBindProgramPipeline +#define gl_DeleteProgramPipelines glDeleteProgramPipelines +#define gl_GenProgramPipelines glGenProgramPipelines +#define gl_GetProgramPipelineiv glGetProgramPipelineiv +#define gl_ValidateProgramPipeline glValidateProgramPipeline +#define gl_GetProgramPipelineInfoLog glGetProgramPipelineInfoLog + +#define gl_UseProgram glUseProgram +#define gl_GetShaderInfoLog glGetShaderInfoLog +#define gl_ProgramUniform1i glProgramUniform1i + +#define gl_GetUniformBlockIndex glGetUniformBlockIndex +#define gl_UniformBlockBinding glUniformBlockBinding +#define gl_GetUniformLocation glGetUniformLocation +#endif namespace GLLoader { diff --git a/plugins/GSdx/GS.cpp b/plugins/GSdx/GS.cpp index 022f128388..198bdce406 100644 --- a/plugins/GSdx/GS.cpp +++ b/plugins/GSdx/GS.cpp @@ -287,8 +287,12 @@ static int _GSopen(void** dsp, char* title, int renderer, int threads = -1) s_gs->m_wnd = new GSWndWGL(); else s_gs->m_wnd = new GSWndDX(); +#else +#ifdef ENABLE_GLES + wnd[0] = NULL; #else wnd[0] = new GSWndOGL(); +#endif wnd[1] = new GSWndEGL(); #endif } diff --git a/plugins/GSdx/GSDeviceOGL.cpp b/plugins/GSdx/GSDeviceOGL.cpp index c8898a62f1..c437a3f0ee 100644 --- a/plugins/GSdx/GSDeviceOGL.cpp +++ b/plugins/GSdx/GSDeviceOGL.cpp @@ -554,7 +554,11 @@ GLuint GSDeviceOGL::CompileGS(GSSelector sel) std::string macro = format("#define GS_IIP %d\n", sel.iip) + format("#define GS_PRIM %d\n", sel.prim); +#ifdef ENABLE_GLES + return 0; +#else return m_shader->Compile("tfx.glsl", "gs_main", GL_GEOMETRY_SHADER, tfx_glsl, macro); +#endif } GLuint GSDeviceOGL::CompilePS(PSSelector sel) @@ -667,11 +671,13 @@ void GSDeviceOGL::CopyRect(GSTexture* st, GSTexture* dt, const GSVector4i& r) // uint32 dstName, enum dstTarget, int dstLevel, int dstX, int dstY, int dstZ, // sizei width, sizei height, sizei depth); if (GLLoader::found_GL_NV_copy_image) { +#ifndef ENABLE_GLES gl_CopyImageSubDataNV( static_cast(st)->GetID(), static_cast(st)->GetTarget(), 0, r.x, r.y, 0, static_cast(dt)->GetID(), static_cast(dt)->GetTarget(), 0, r.x, r.y, 0, r.width(), r.height(), 1); +#endif } else if (GLLoader::found_GL_ARB_copy_image) { // Would need an update of GL definition. For the moment it isn't supported by driver anyway. #if 0 @@ -1152,6 +1158,7 @@ void GSDeviceOGL::CheckDebugLog() void GSDeviceOGL::DebugOutputToFile(unsigned int source, unsigned int type, unsigned int id, unsigned int severity, const char* message) { +#ifndef ENABLE_GLES char debType[20], debSev[5]; static int sev_counter = 0; @@ -1190,6 +1197,7 @@ void GSDeviceOGL::DebugOutputToFile(unsigned int source, unsigned int type, unsi fclose(f); } //if (sev_counter > 2) assert(0); +#endif } // (A - B) * C + D @@ -1219,8 +1227,13 @@ void GSDeviceOGL::DebugOutputToFile(unsigned int source, unsigned int type, unsi #define D3DBLEND_BLENDFACTOR GL_CONSTANT_COLOR #define D3DBLEND_INVBLENDFACTOR GL_ONE_MINUS_CONSTANT_COLOR +#ifdef ENABLE_GLES +#define D3DBLEND_SRCALPHA GL_SRC_ALPHA +#define D3DBLEND_INVSRCALPHA GL_ONE_MINUS_SRC_ALPHA +#else #define D3DBLEND_SRCALPHA GL_SRC1_ALPHA #define D3DBLEND_INVSRCALPHA GL_ONE_MINUS_SRC1_ALPHA +#endif const GSDeviceOGL::D3D9Blend GSDeviceOGL::m_blendMapD3D9[3*3*3*3] = { diff --git a/plugins/GSdx/GSDeviceOGL.h b/plugins/GSdx/GSDeviceOGL.h index e35313a71c..334b042d0a 100644 --- a/plugins/GSdx/GSDeviceOGL.h +++ b/plugins/GSdx/GSDeviceOGL.h @@ -123,12 +123,14 @@ public: case GL_FUNC_REVERSE_SUBTRACT: return "REV SUB"; case GL_ONE: return "ONE"; case GL_ZERO: return "ZERO"; +#ifndef ENABLE_GLES case GL_SRC1_ALPHA: return "SRC1 ALPHA"; + case GL_ONE_MINUS_SRC1_ALPHA: return "1 - SRC1 ALPHA"; +#endif case GL_SRC_ALPHA: return "SRC ALPHA"; case GL_ONE_MINUS_DST_ALPHA: return "1 - DST ALPHA"; case GL_DST_ALPHA: return "DST ALPHA"; case GL_DST_COLOR: return "DST COLOR"; - case GL_ONE_MINUS_SRC1_ALPHA: return "1 - SRC1 ALPHA"; case GL_ONE_MINUS_SRC_ALPHA: return "1 - SRC ALPHA"; case GL_CONSTANT_COLOR: return "CST"; case GL_ONE_MINUS_CONSTANT_COLOR: return "1 - CST"; diff --git a/plugins/GSdx/GSRendererOGL.cpp b/plugins/GSdx/GSRendererOGL.cpp index 4f1ecd6213..063ac30f0d 100644 --- a/plugins/GSdx/GSRendererOGL.cpp +++ b/plugins/GSdx/GSRendererOGL.cpp @@ -43,6 +43,10 @@ bool GSRendererOGL::CreateDevice(GSDevice* dev) if(!GSRenderer::CreateDevice(dev)) return false; +#ifdef ENABLE_GLES + fprintf(stderr, "FIXME Creation of FBA dss/bs state is not yet implemented\n"); +#endif + return true; } @@ -417,14 +421,14 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour // to only draw pixels which would cause the destination alpha test to fail in the future once. // Unfortunately this also means only drawing those pixels at all, which is why this is a hack. // The interaction with FBA in D3D9 is probably less than ideal. - if (UserHacks_AlphaStencil && DATE && dev->HasStencil() && om_bsel.wa && (!context->TEST.ATE || context->TEST.ATST == 1)) + if (UserHacks_AlphaStencil && DATE && dev->HasStencil() && om_bsel.wa && (!context->TEST.ATE || context->TEST.ATST == ATST_ALWAYS)) { if (!context->FBA.FBA) { if (context->TEST.DATM == 0) - ps_sel.atst = 5; // >= + ps_sel.atst = ATST_GEQUAL; // >= else - ps_sel.atst = 2; // < + ps_sel.atst = ATST_LESS; // < ps_cb.FogColor_AREF.a = (float)0x80; } if (!(context->FBA.FBA && context->TEST.DATM == 1)) @@ -545,10 +549,10 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour switch(context->TEST.AFAIL) { - case 0: z = r = g = b = a = false; break; // none - case 1: z = false; break; // rgba - case 2: r = g = b = a = false; break; // z - case 3: z = a = false; break; // rgb + case AFAIL_KEEP: z = r = g = b = a = false; break; // none + case AFAIL_FB_ONLY: z = false; break; // rgba + case AFAIL_ZB_ONLY: r = g = b = a = false; break; // z + case AFAIL_RGB_ONLY: z = a = false; break; // rgb default: __assume(0); } @@ -584,3 +588,12 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour if(om_dssel.fba) UpdateFBA(rt); } + +void GSRendererOGL::UpdateFBA(GSTexture* rt) +{ +#ifdef ENABLE_GLES +#ifdef _DEBUG + fprintf(stderr, "FIXME UpdateFBA not yet implemented\n"); +#endif +#endif +} diff --git a/plugins/GSdx/GSRendererOGL.h b/plugins/GSdx/GSRendererOGL.h index aadc3fb4be..e265ded94c 100644 --- a/plugins/GSdx/GSRendererOGL.h +++ b/plugins/GSdx/GSRendererOGL.h @@ -52,7 +52,7 @@ class GSRendererOGL : public GSRendererHW bool CreateDevice(GSDevice* dev); - void UpdateFBA(GSTexture* rt) {} + void UpdateFBA(GSTexture* rt); void DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex); }; diff --git a/plugins/GSdx/GSShaderOGL.cpp b/plugins/GSdx/GSShaderOGL.cpp index df3e244d2b..5f8f19dbf3 100644 --- a/plugins/GSdx/GSShaderOGL.cpp +++ b/plugins/GSdx/GSShaderOGL.cpp @@ -32,16 +32,20 @@ GSShaderOGL::GSShaderOGL(bool debug, bool sso, bool glsl420) : m_glsl420(glsl420) { m_single_prog.clear(); +#ifndef ENABLE_GLES if (sso) { gl_GenProgramPipelines(1, &m_pipeline); gl_BindProgramPipeline(m_pipeline); } +#endif } GSShaderOGL::~GSShaderOGL() { +#ifndef ENABLE_GLES if (m_sso) gl_DeleteProgramPipelines(1, &m_pipeline); +#endif for (auto it = m_single_prog.begin(); it != m_single_prog.end() ; it++) gl_DeleteProgram(it->second); m_single_prog.clear(); @@ -52,8 +56,10 @@ void GSShaderOGL::VS(GLuint s) if (m_vs != s) { m_vs = s; +#ifndef ENABLE_GLES if (m_sso) gl_UseProgramStages(m_pipeline, GL_VERTEX_SHADER_BIT, s); +#endif } } @@ -62,8 +68,10 @@ void GSShaderOGL::PS(GLuint s) if (m_ps != s) { m_ps = s; +#ifndef ENABLE_GLES if (m_sso) gl_UseProgramStages(m_pipeline, GL_FRAGMENT_SHADER_BIT, s); +#endif } } @@ -72,8 +80,10 @@ void GSShaderOGL::GS(GLuint s) if (m_gs != s) { m_gs = s; +#ifndef ENABLE_GLES if (m_sso) gl_UseProgramStages(m_pipeline, GL_GEOMETRY_SHADER_BIT, s); +#endif } } @@ -91,7 +101,9 @@ void GSShaderOGL::SetSamplerBinding(GLuint prog, GLchar* name, GLuint binding) GLint loc = gl_GetUniformLocation(prog, name); if (loc != -1) { if (m_sso) { +#ifndef ENABLE_GLES gl_ProgramUniform1i(prog, loc, binding); +#endif } else { gl_Uniform1i(loc, binding); } @@ -173,6 +185,7 @@ bool GSShaderOGL::ValidateProgram(GLuint p) bool GSShaderOGL::ValidatePipeline(GLuint p) { +#ifndef ENABLE_GLES if (!m_debug_shader) return true; // FIXME: might be mandatory to validate the pipeline @@ -192,6 +205,8 @@ bool GSShaderOGL::ValidatePipeline(GLuint p) } fprintf(stderr, "\n"); +#endif + return false; } @@ -282,9 +297,11 @@ std::string GSShaderOGL::GenGlslHeader(const std::string& entry, GLenum type, co case GL_VERTEX_SHADER: header += "#define VERTEX_SHADER 1\n"; break; +#ifndef ENABLE_GLES case GL_GEOMETRY_SHADER: header += "#define GEOMETRY_SHADER 1\n"; break; +#endif case GL_FRAGMENT_SHADER: header += "#define FRAGMENT_SHADER 1\n"; break; @@ -303,10 +320,11 @@ GLuint GSShaderOGL::Compile(const std::string& glsl_file, const std::string& ent { GLuint program = 0; - // Not supported +#ifndef ENABLE_GLES if (type == GL_GEOMETRY_SHADER && !GLLoader::found_geometry_shader) { return program; } +#endif // Note it is better to separate header and source file to have the good line number // in the glsl compiler report @@ -321,14 +339,15 @@ GLuint GSShaderOGL::Compile(const std::string& glsl_file, const std::string& ent sources[1] = '\0'; if (m_sso) { +#ifndef ENABLE_GLES #if 0 - // Could be useful one day const GLchar* ShaderSource[1]; ShaderSource[0] = header.append(glsl_h_code).c_str(); program = gl_CreateShaderProgramv(type, 1, &ShaderSource[0]); #else program = gl_CreateShaderProgramv(type, 2, sources); #endif +#endif } else { program = gl_CreateShader(type); gl_ShaderSource(program, 2, sources, NULL); diff --git a/plugins/GSdx/GSWnd.cpp b/plugins/GSdx/GSWnd.cpp index ebd801d7c7..d93fb2bbe6 100644 --- a/plugins/GSdx/GSWnd.cpp +++ b/plugins/GSdx/GSWnd.cpp @@ -24,6 +24,7 @@ void GSWndGL::PopulateGlFunction() { +#ifndef ENABLE_GLES *(void**)&(gl_ActiveTexture) = GetProcAddress("glActiveTexture"); *(void**)&(gl_BlendColor) = GetProcAddress("glBlendColor"); *(void**)&(gl_AttachShader) = GetProcAddress("glAttachShader"); @@ -99,4 +100,5 @@ void GSWndGL::PopulateGlFunction() *(void**)&(gl_GetUniformBlockIndex) = GetProcAddress("glGetUniformBlockIndex"); *(void**)&(gl_UniformBlockBinding) = GetProcAddress("glUniformBlockBinding"); *(void**)&(gl_GetUniformLocation) = GetProcAddress("glGetUniformLocation"); +#endif } diff --git a/plugins/GSdx/GSWndOGL.cpp b/plugins/GSdx/GSWndOGL.cpp index 6063b91c17..f7438a4375 100644 --- a/plugins/GSdx/GSWndOGL.cpp +++ b/plugins/GSdx/GSWndOGL.cpp @@ -22,7 +22,7 @@ #include "stdafx.h" #include "GSWndOGL.h" -#ifdef _LINUX +#if defined(_LINUX) && !defined(ENABLE_GLES) GSWndOGL::GSWndOGL() : m_NativeWindow(0), m_NativeDisplay(NULL), m_swapinterval(NULL) { diff --git a/plugins/GSdx/GSWndOGL.h b/plugins/GSdx/GSWndOGL.h index 86db6ed933..19363e4c9e 100644 --- a/plugins/GSdx/GSWndOGL.h +++ b/plugins/GSdx/GSWndOGL.h @@ -21,7 +21,7 @@ #include "GSWnd.h" -#ifdef _LINUX +#if defined(_LINUX) && !defined(ENABLE_GLES) #include #include diff --git a/plugins/GSdx/res/tfx.glsl b/plugins/GSdx/res/tfx.glsl index c581eafbf0..bdfcaf3b64 100644 --- a/plugins/GSdx/res/tfx.glsl +++ b/plugins/GSdx/res/tfx.glsl @@ -349,8 +349,12 @@ layout(location = 2) in vec4 SHADERc; #endif // Same buffer but 2 colors for dual source blending +#if GL_ES +layout(location = 0) out vec4 SV_Target0; +#else layout(location = 0, index = 0) out vec4 SV_Target0; layout(location = 0, index = 1) out vec4 SV_Target1; +#endif #ifdef DISABLE_GL42 uniform sampler2D TextureSampler; @@ -724,6 +728,13 @@ void ps_main() { vec4 c = ps_color(); +#if GL_ES + + c.a *= 2.0; + SV_Target0 = c; + +#else + float alpha = c.a * 2.0; if(PS_AOUT != 0) // 16 bit output @@ -739,5 +750,8 @@ void ps_main() SV_Target0 = c; SV_Target1 = vec4(alpha, alpha, alpha, alpha); + +#endif + } #endif diff --git a/plugins/GSdx/stdafx.h b/plugins/GSdx/stdafx.h index c93f322327..278df8ae26 100644 --- a/plugins/GSdx/stdafx.h +++ b/plugins/GSdx/stdafx.h @@ -186,8 +186,13 @@ using namespace std; //#include //#include +#ifdef ENABLE_GLES + #include + #include +#else #include #include +#endif #include "GLLoader.h" //using namespace __gnu_cxx;