summaryrefslogtreecommitdiff
path: root/pcr/reicast-multilib-git/refactor-rend-stuff.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/reicast-multilib-git/refactor-rend-stuff.patch')
-rw-r--r--pcr/reicast-multilib-git/refactor-rend-stuff.patch1244
1 files changed, 0 insertions, 1244 deletions
diff --git a/pcr/reicast-multilib-git/refactor-rend-stuff.patch b/pcr/reicast-multilib-git/refactor-rend-stuff.patch
deleted file mode 100644
index 187ccb8d0..000000000
--- a/pcr/reicast-multilib-git/refactor-rend-stuff.patch
+++ /dev/null
@@ -1,1244 +0,0 @@
-diff -Nur a/core/rend/gles/gles.cpp b/core/rend/gles/gles.cpp
---- a/core/rend/gles/gles.cpp 2015-10-06 21:43:53.047336437 -0300
-+++ b/core/rend/gles/gles.cpp 2015-10-06 21:51:21.723570329 -0300
-@@ -1,27 +1,3 @@
--#include <math.h>
--#include "gles.h"
--#include "rend/TexCache.h"
--#include "cfg/cfg.h"
--
--#ifdef TARGET_PANDORA
--#include <unistd.h>
--#include <fcntl.h>
--#include <sys/ioctl.h>
--#include <linux/fb.h>
--
--#ifndef FBIO_WAITFORVSYNC
-- #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
--#endif
--int fbdev = -1;
--#endif
--
--#ifndef GLES
--#if HOST_OS != OS_DARWIN
--#include <GL3/gl3w.c>
--#pragma comment(lib,"Opengl32.lib")
--#endif
--#endif
--
- /*
- GL|ES 2
- Slower, smaller subset of gl2
-@@ -54,305 +30,126 @@
-
- */
-
-+#include <math.h>
-+#include "cfg/cfg.h"
- #include "oslib/oslib.h"
- #include "rend/rend.h"
-+#include "rend/TexCache.h"
- #include "hw/pvr/Renderer_if.h"
-+#include "deps/libpng/png.h"
-+#include "gles.h"
-+#include "glshaders.h"
-
--void GenSorted();
--
--float fb_scale_x,fb_scale_y;
--
--#ifndef GLES
--#define attr "in"
--#define vary "out"
--#else
--#define attr "attribute"
--#define vary "varying"
-+#ifdef TARGET_PANDORA
-+ #include <unistd.h>
-+ #include <fcntl.h>
-+ #include <sys/ioctl.h>
-+ #include <linux/fb.h>
- #endif
--#if 1
-
--//Fragment and vertex shaders code
--//pretty much 1:1 copy of the d3d ones for now
--const char* VertexShaderSource =
--#ifndef GLES
-- "#version 140 \n"
-+#if !defined(GLES) && HOST_OS != OS_DARWIN
-+ #include <GL3/gl3w.c>
-+ #pragma comment(lib,"Opengl32.lib")
- #endif
--"\
--/* Vertex constants*/ \n\
--uniform highp vec4 scale; \n\
--uniform highp vec4 depth_scale; \n\
--uniform highp float sp_FOG_DENSITY; \n\
--/* Vertex input */ \n\
--" attr " highp vec4 in_pos; \n\
--" attr " lowp vec4 in_base; \n\
--" attr " lowp vec4 in_offs; \n\
--" attr " mediump vec2 in_uv; \n\
--/* output */ \n\
--" vary " lowp vec4 vtx_base; \n\
--" vary " lowp vec4 vtx_offs; \n\
--" vary " mediump vec2 vtx_uv; \n\
--" vary " highp vec3 vtx_xyz; \n\
--void main() \n\
--{ \n\
-- vtx_base=in_base; \n\
-- vtx_offs=in_offs; \n\
-- vtx_uv=in_uv; \n\
-- vec4 vpos=in_pos; \n\
-- vtx_xyz.xy = vpos.xy; \n\
-- vtx_xyz.z = vpos.z*sp_FOG_DENSITY; \n\
-- vpos.w=1.0/vpos.z; \n\
-- vpos.xy=vpos.xy*scale.xy-scale.zw; \n\
-- vpos.xy*=vpos.w; \n\
-- vpos.z=depth_scale.x+depth_scale.y*vpos.w; \n\
-- gl_Position = vpos; \n\
--}";
--
-
--#else
--
--
--
--const char* VertexShaderSource =
-- ""
-- "/* Test Projection Matrix */"
-- ""
-- "uniform highp mat4 Projection;"
-- ""
-- ""
-- "/* Vertex constants */"
-- ""
-- "uniform highp float sp_FOG_DENSITY;"
-- "uniform highp vec4 scale;"
-- ""
-- "/* Vertex output */"
-- ""
-- "attribute highp vec4 in_pos;"
-- "attribute lowp vec4 in_base;"
-- "attribute lowp vec4 in_offs;"
-- "attribute mediump vec2 in_uv;"
-- ""
-- "/* Transformed input */"
-- ""
-- "varying lowp vec4 vtx_base;"
-- "varying lowp vec4 vtx_offs;"
-- "varying mediump vec2 vtx_uv;"
-- "varying highp vec3 vtx_xyz;"
-- ""
-- "void main()"
-- "{"
-- " vtx_base = in_base;"
-- " vtx_offs = in_offs;"
-- " vtx_uv = in_uv;"
-- ""
-- " vec4 vpos = in_pos;"
-- " vtx_xyz.xy = vpos.xy; "
-- " vtx_xyz.z = vpos.z*sp_FOG_DENSITY; "
-- ""
-- " vpos.w = 1.0/vpos.z; "
-- " vpos.z *= -scale.w; "
-- " vpos.xy = vpos.xy*scale.xy-sign(scale.xy); "
-- " vpos.xy *= vpos.w; "
-- ""
-- " gl_Position = vpos;"
-- // " gl_Position = vpos * Projection;"
-- "}"
-- ;
-+#define OSD_TEX_W 512
-+#define OSD_TEX_H 256
-
-+#define key_CONT_C (1 << 0)
-+#define key_CONT_B (1 << 1)
-+#define key_CONT_A (1 << 2)
-+#define key_CONT_START (1 << 3)
-+#define key_CONT_DPAD_UP (1 << 4)
-+#define key_CONT_DPAD_DOWN (1 << 5)
-+#define key_CONT_DPAD_LEFT (1 << 6)
-+#define key_CONT_DPAD_RIGHT (1 << 7)
-+#define key_CONT_Z (1 << 8)
-+#define key_CONT_Y (1 << 9)
-+#define key_CONT_X (1 << 10)
-+#define key_CONT_D (1 << 11)
-+#define key_CONT_DPAD2_UP (1 << 12)
-+#define key_CONT_DPAD2_DOWN (1 << 13)
-+#define key_CONT_DPAD2_LEFT (1 << 14)
-+#define key_CONT_DPAD2_RIGHT (1 << 15)
-
--#endif
-+gl_ctx gl;
-
-+float fb_scale_x;
-+float fb_scale_y;
-+int screen_width;
-+int screen_height;
-
-+GLuint osd_tex;
-
-+extern u16 kcode[4];
-+extern u8 rt[4];
-+extern u8 lt[4];
-
-+u32 osd_base;
-+u32 osd_count;
-
-+#if defined(_ANDROID)
-+ extern float vjoy_pos[14][8];
-+#else
-+ float vjoy_pos[14][8]=
-+ {
-+ {24+0,24+64,64,64}, //LEFT
-+ {24+64,24+0,64,64}, //UP
-+ {24+128,24+64,64,64}, //RIGHT
-+ {24+64,24+128,64,64}, //DOWN
-+
-+ {440+0,280+64,64,64}, //X
-+ {440+64,280+0,64,64}, //Y
-+ {440+128,280+64,64,64}, //B
-+ {440+64,280+128,64,64}, //A
-+
-+ {320-32,360+32,64,64}, //Start
-+
-+ {440,200,90,64}, //RT
-+ {542,200,90,64}, //LT
-+
-+ {-24,128+224,128,128}, //ANALOG_RING
-+ {96,320,64,64}, //ANALOG_POINT
-+ {1}
-+ };
-+#endif // !_ANDROID
-
--/*
-+float vjoy_sz[2][14] = {
-+ { 64,64,64,64, 64,64,64,64, 64, 90,90, 128, 64 },
-+ { 64,64,64,64, 64,64,64,64, 64, 64,64, 128, 64 },
-+};
-
--cp_AlphaTest 0 1 2 2
--pp_ClipTestMode -1 0 1 3 6
--pp_UseAlpha 0 1 2 12
--pp_Texture 1
-- pp_IgnoreTexA 0 1 2 2
-- pp_ShadInstr 0 1 2 3 4 8
-- pp_Offset 0 1 2 16
-- pp_FogCtrl 0 1 2 3 4 64
--pp_Texture 0
-- pp_FogCtrl 0 2 3 4 4
--
--pp_Texture: off -> 12*4=48 shaders
--pp_Texture: on -> 12*64=768 shaders
--Total: 816 shaders
--
--highp float fdecp(highp float flt,out highp float e) \n\
--{ \n\
-- highp float lg2=log2(flt); //ie , 2.5 \n\
-- highp float frc=fract(lg2); //ie , 0.5 \n\
-- e=lg2-frc; //ie , 2.5-0.5=2 (exp) \n\
-- return pow(2.0,frc); //2^0.5 (manitsa) \n\
--} \n\
--lowp float fog_mode2(highp float invW) \n\
--{ \n\
-- highp float foginvW=invW; \n\
-- foginvW=clamp(foginvW,1.0,255.0); \n\
-- \n\
-- highp float fogexp; //0 ... 7 \n\
-- highp float fogman=fdecp(foginvW, fogexp); //[1,2) mantissa bits. that is 1.m \n\
-- \n\
-- highp float fogman_hi=fogman*16.0-16.0; //[16,32) -16 -> [0,16) \n\
-- highp float fogman_idx=floor(fogman_hi); //[0,15] \n\
-- highp float fogman_blend=fract(fogman_hi); //[0,1) -- can also be fogman_idx-fogman_idx ! \n\
-- highp float fog_idx_fr=fogexp*16.0+fogman_idx; //[0,127] \n\
-- \n\
-- highp float fog_idx_pixel_fr=fog_idx_fr+0.5; \n\
-- highp float fog_idx_pixel_n=fog_idx_pixel_fr/128.0;//normalise to [0.5/128,127.5/128) coordinates \n\
-- \n\
-- //fog is 128x1 texure \n\
-- lowp vec2 fog_coefs=texture2D(fog_table,vec2(fog_idx_pixel_n)).rg; \n\
-- \n\
-- lowp float fog_coef=mix(fog_coefs.r,fog_coefs.g,fogman_blend); \n\
-- \n\
-- return fog_coef; \n\
--} \n\
--*/
-+#ifdef TARGET_PANDORA
-+ #ifndef FBIO_WAITFORVSYNC
-+ #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
-+ #endif
-
--#ifndef GLES
--#define FRAGCOL "FragColor"
--#define TEXLOOKUP "texture"
--#define vary "in"
--#else
--#define FRAGCOL "gl_FragColor"
--#define TEXLOOKUP "texture2D"
-+ int fbdev = -1;
-+ char OSD_Info[128];
-+ int OSD_Delay = 0;
-+ char OSD_Counters[256];
-+ int OSD_Counter = 0;
-+ GLuint osd_font;
- #endif
-
--
--const char* PixelPipelineShader =
--#ifndef GLES
-- "#version 140 \n"
-- "out vec4 FragColor; \n"
-+#if !defined(_ANDROID) && !defined(TARGET_NACL32) && HOST_OS==OS_LINUX
-+ #define SET_AFNT 1
- #endif
--"\
--\
--#define cp_AlphaTest %d \n\
--#define pp_ClipTestMode %d.0 \n\
--#define pp_UseAlpha %d \n\
--#define pp_Texture %d \n\
--#define pp_IgnoreTexA %d \n\
--#define pp_ShadInstr %d \n\
--#define pp_Offset %d \n\
--#define pp_FogCtrl %d \n\
--/* Shader program params*/ \n\
--/* gles has no alpha test stage, so its emulated on the shader */ \n\
--uniform lowp float cp_AlphaTestValue; \n\
--uniform lowp vec4 pp_ClipTest; \n\
--uniform lowp vec3 sp_FOG_COL_RAM,sp_FOG_COL_VERT; \n\
--uniform highp vec2 sp_LOG_FOG_COEFS; \n\
--uniform sampler2D tex,fog_table; \n\
--/* Vertex input*/ \n\
--" vary " lowp vec4 vtx_base; \n\
--" vary " lowp vec4 vtx_offs; \n\
--" vary " mediump vec2 vtx_uv; \n\
--" vary " highp vec3 vtx_xyz; \n\
--lowp float fog_mode2(highp float val) \n\
--{ \n\
-- highp float fog_idx=clamp(val,0.0,127.99); \n\
-- return clamp(sp_LOG_FOG_COEFS.y*log2(fog_idx)+sp_LOG_FOG_COEFS.x,0.001,1.0); //the clamp is required due to yet another bug !\n\
--} \n\
--void main() \n\
--{ \n\
-- lowp vec4 color=vtx_base; \n\
-- #if pp_UseAlpha==0 \n\
-- color.a=1.0; \n\
-- #endif\n\
-- #if pp_FogCtrl==3 \n\
-- color=vec4(sp_FOG_COL_RAM.rgb,fog_mode2(vtx_xyz.z)); \n\
-- #endif\n\
-- #if pp_Texture==1 \n\
-- { \n\
-- lowp vec4 texcol=" TEXLOOKUP "(tex,vtx_uv); \n\
-- \n\
-- #if pp_IgnoreTexA==1 \n\
-- texcol.a=1.0; \n\
-- #endif\n\
-- \n\
-- #if pp_ShadInstr==0 \n\
-- { \n\
-- color.rgb=texcol.rgb; \n\
-- color.a=texcol.a; \n\
-- } \n\
-- #endif\n\
-- #if pp_ShadInstr==1 \n\
-- { \n\
-- color.rgb*=texcol.rgb; \n\
-- color.a=texcol.a; \n\
-- } \n\
-- #endif\n\
-- #if pp_ShadInstr==2 \n\
-- { \n\
-- color.rgb=mix(color.rgb,texcol.rgb,texcol.a); \n\
-- } \n\
-- #endif\n\
-- #if pp_ShadInstr==3 \n\
-- { \n\
-- color*=texcol; \n\
-- } \n\
-- #endif\n\
-- \n\
-- #if pp_Offset==1 \n\
-- { \n\
-- color.rgb+=vtx_offs.rgb; \n\
-- if (pp_FogCtrl==1) \n\
-- color.rgb=mix(color.rgb,sp_FOG_COL_VERT.rgb,vtx_offs.a); \n\
-- } \n\
-- #endif\n\
-- } \n\
-- #endif\n\
-- #if pp_FogCtrl==0 \n\
-- { \n\
-- color.rgb=mix(color.rgb,sp_FOG_COL_RAM.rgb,fog_mode2(vtx_xyz.z)); \n\
-- } \n\
-- #endif\n\
-- #if cp_AlphaTest == 1 \n\
-- if (cp_AlphaTestValue>color.a) discard;\n\
-- #endif \n\
-- //color.rgb=vec3(vtx_xyz.z/255.0);\n\
-- " FRAGCOL "=color; \n\
--}";
-
--const char* ModifierVolumeShader =
--#ifndef GLES
-- "#version 140 \n"
-- "out vec4 FragColor; \n"
--#endif
--" \
--uniform lowp float sp_ShaderColor; \n\
--/* Vertex input*/ \n\
--void main() \n\
--{ \n\
-- " FRAGCOL "=vec4(0.0, 0.0, 0.0, sp_ShaderColor); \n\
--}";
-+FILE* pngfile;
-
--const char* OSD_Shader =
--#ifndef GLES
-- "#version 140 \n"
-- "out vec4 FragColor; \n"
--#endif
--" \
--" vary " lowp vec4 vtx_base; \n\
--" vary " mediump vec2 vtx_uv; \n\
--/* Vertex input*/ \n\
--uniform sampler2D tex; \n\
--void main() \n\
--{ \n\
-- mediump vec2 uv=vtx_uv; \n\
-- uv.y=1.0-uv.y; \n\
-- " FRAGCOL "=vtx_base*" TEXLOOKUP "(tex,uv.st); \n\n\
--}";
-+void GenSorted();
-
-+bool gl_init(void* wind, void* disp);
-
--gl_ctx gl;
-+//swap buffers
-+void gl_swap();
-+//destroy the gles context and free resources
-+void gl_term();
-
--int screen_width;
--int screen_height;
-+GLuint gl_CompileShader(const char* shader,GLuint type);
-+
-+bool gl_create_resources();
-
- #if (HOST_OS != OS_DARWIN) && !defined(TARGET_NACL32)
- #ifdef GLES
-@@ -843,11 +640,6 @@
- return glIsProgram(s->program)==GL_TRUE;
- }
-
--GLuint osd_tex;
--#ifdef TARGET_PANDORA
--GLuint osd_font;
--#endif
--
- bool gl_create_resources()
- {
-
-@@ -938,51 +730,8 @@
- return true;
- }
-
--bool gl_init(void* wind, void* disp);
--
--//swap buffers
--void gl_swap();
--//destroy the gles context and free resources
--void gl_term();
--
--GLuint gl_CompileShader(const char* shader,GLuint type);
--
--bool gl_create_resources();
--
- //setup
-
--
--bool gles_init()
--{
--
-- if (!gl_init((void*)libPvr_GetRenderTarget(),
-- (void*)libPvr_GetRenderSurface()))
-- return false;
--
-- if (!gl_create_resources())
-- return false;
--
--#if defined(GLES) && HOST_OS != OS_DARWIN && !defined(TARGET_NACL32)
-- #ifdef TARGET_PANDORA
-- fbdev=open("/dev/fb0", O_RDONLY);
-- #else
-- eglSwapInterval(gl.setup.display,1);
-- #endif
--#endif
--
-- //clean up all buffers ...
-- for (int i=0;i<10;i++)
-- {
-- glClearColor(0.f, 0.f, 0.f, 0.f);
-- glClear(GL_COLOR_BUFFER_BIT);
-- gl_swap();
-- }
--
-- return true;
--}
--
--
--
- float fog_coefs[]={0,0};
- void tryfit(float* x,float* y)
- {
-@@ -1043,64 +792,6 @@
- //printf("%f\n",B*log(maxdev)/log(2.0)+A);
- }
-
--
--
--extern u16 kcode[4];
--extern u8 rt[4],lt[4];
--
--#define key_CONT_C (1 << 0)
--#define key_CONT_B (1 << 1)
--#define key_CONT_A (1 << 2)
--#define key_CONT_START (1 << 3)
--#define key_CONT_DPAD_UP (1 << 4)
--#define key_CONT_DPAD_DOWN (1 << 5)
--#define key_CONT_DPAD_LEFT (1 << 6)
--#define key_CONT_DPAD_RIGHT (1 << 7)
--#define key_CONT_Z (1 << 8)
--#define key_CONT_Y (1 << 9)
--#define key_CONT_X (1 << 10)
--#define key_CONT_D (1 << 11)
--#define key_CONT_DPAD2_UP (1 << 12)
--#define key_CONT_DPAD2_DOWN (1 << 13)
--#define key_CONT_DPAD2_LEFT (1 << 14)
--#define key_CONT_DPAD2_RIGHT (1 << 15)
--
--u32 osd_base;
--u32 osd_count;
--
--
--#if defined(_ANDROID)
--extern float vjoy_pos[14][8];
--#else
--
--float vjoy_pos[14][8]=
--{
-- {24+0,24+64,64,64}, //LEFT
-- {24+64,24+0,64,64}, //UP
-- {24+128,24+64,64,64}, //RIGHT
-- {24+64,24+128,64,64}, //DOWN
--
-- {440+0,280+64,64,64}, //X
-- {440+64,280+0,64,64}, //Y
-- {440+128,280+64,64,64}, //B
-- {440+64,280+128,64,64}, //A
--
-- {320-32,360+32,64,64}, //Start
--
-- {440,200,90,64}, //RT
-- {542,200,90,64}, //LT
--
-- {-24,128+224,128,128}, //ANALOG_RING
-- {96,320,64,64}, //ANALOG_POINT
-- {1}
--};
--#endif // !_ANDROID
--
--float vjoy_sz[2][14] = {
-- { 64,64,64,64, 64,64,64,64, 64, 90,90, 128, 64 },
-- { 64,64,64,64, 64,64,64,64, 64, 64,64, 128, 64 },
--};
--
- static void DrawButton(float* xy, u32 state)
- {
- Vertex vtx;
-@@ -1139,12 +830,6 @@
- osd_count+=4;
- }
-
--static void ClearBG()
--{
--
--}
--
--
- void DrawButton2(float* xy, bool state) { DrawButton(xy,state?0:255); }
- #ifdef TARGET_PANDORA
- static void DrawCenteredText(float yy, float scale, int transparency, const char* text)
-@@ -1247,13 +932,6 @@
- }
- #endif
-
--#ifdef TARGET_PANDORA
--char OSD_Info[128];
--int OSD_Delay=0;
--char OSD_Counters[256];
--int OSD_Counter=0;
--#endif
--
- static void OSD_HOOK()
- {
- osd_base=pvrrc.verts.used();
-@@ -1290,128 +968,95 @@
- #endif
- }
-
--extern GLuint osd_tex;
--#ifdef TARGET_PANDORA
--extern GLuint osd_font;
--#endif
--
--#define OSD_TEX_W 512
--#define OSD_TEX_H 256
--
--void OSD_DRAW()
-+/*
-+bool rend_single_frame()
- {
-- #ifndef TARGET_PANDORA
-- if (osd_tex)
-- {
-- float u=0;
-- float v=0;
--
-- for (int i=0;i<13;i++)
-- {
-- //umin,vmin,umax,vmax
-- vjoy_pos[i][4]=(u+1)/OSD_TEX_W;
-- vjoy_pos[i][5]=(v+1)/OSD_TEX_H;
--
-- vjoy_pos[i][6]=((u+vjoy_sz[0][i]-1))/OSD_TEX_W;
-- vjoy_pos[i][7]=((v+vjoy_sz[1][i]-1))/OSD_TEX_H;
--
-- u+=vjoy_sz[0][i];
-- if (u>=OSD_TEX_W)
-- {
-- u-=OSD_TEX_W;
-- v+=vjoy_sz[1][i];
-- }
-- //v+=vjoy_pos[i][3];
-- }
--
-- verify(glIsProgram(gl.OSD_SHADER.program));
-+ //wait render start only if no frame pending
-+ _pvrrc = DequeueRender();
-
-- glBindTexture(GL_TEXTURE_2D,osd_tex);
-- glUseProgram(gl.OSD_SHADER.program);
-+ while (!_pvrrc)
-+ {
-+ rs.Wait();
-+ _pvrrc = DequeueRender();
-+ }
-
-- //reset rendering scale
--/*
-- float dc_width=640;
-- float dc_height=480;
-+ bool do_swp=false;
-+ //if (kcode[0]&(1<<9))
-+ {
-
-- float dc2s_scale_h=screen_height/480.0f;
-- float ds2s_offs_x=(screen_width-dc2s_scale_h*640)/2;
-
-- //-1 -> too much to left
-- ShaderUniforms.scale_coefs[0]=2.0f/(screen_width/dc2s_scale_h);
-- ShaderUniforms.scale_coefs[1]=-2/dc_height;
-- ShaderUniforms.scale_coefs[2]=1-2*ds2s_offs_x/(screen_width);
-- ShaderUniforms.scale_coefs[3]=-1;
-+ //clear up & free data ..
-+ tactx_Recycle(_pvrrc);
-+ _pvrrc=0;
-
-- glUniform4fv( gl.OSD_SHADER.scale, 1, ShaderUniforms.scale_coefs);
-+ return do_swp;
-+}
- */
-
-- glEnable(GL_BLEND);
-- glDisable(GL_DEPTH_TEST);
-- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
--
-- glDepthMask(false);
-- glDepthFunc(GL_ALWAYS);
--
-- glDisable(GL_CULL_FACE);
-- glDisable(GL_SCISSOR_TEST);
--
-- int dfa=osd_count/4;
--
-- for (int i=0;i<dfa;i++)
-- glDrawArrays(GL_TRIANGLE_STRIP,osd_base+i*4,4);
-- }
--#endif
--#ifdef TARGET_PANDORA
-- if (osd_font)
-- {
-- float u=0;
-- float v=0;
--
-- verify(glIsProgram(gl.OSD_SHADER.program));
--
-- float dc_width=640;
-- float dc_height=480;
--
-- float dc2s_scale_h=screen_height/480.0f;
-- float ds2s_offs_x=(screen_width-dc2s_scale_h*640)/2;
-
-+void rend_set_fb_scale(float x,float y)
-+{
-+ fb_scale_x=x;
-+ fb_scale_y=y;
-+}
-
-- glBindTexture(GL_TEXTURE_2D,osd_font);
-- glUseProgram(gl.OSD_SHADER.program);
-+struct glesrend : Renderer
-+{
-+ bool Init();
-+ void Resize(int width, int height);
-+ void Term();
-
-- /*
-- //-1 -> too much to left
-- ShaderUniforms.scale_coefs[0]=2.0f/(screen_width/dc2s_scale_h);
-- ShaderUniforms.scale_coefs[1]=-2/dc_height;
-- ShaderUniforms.scale_coefs[2]=1-2*ds2s_offs_x/(screen_width);
-- ShaderUniforms.scale_coefs[3]=-1;
-+ bool Process(TA_context* ctx);
-+ bool Render();
-
-- glUniform4fv( gl.OSD_SHADER.scale, 1, ShaderUniforms.scale_coefs);
--*/
-+ void Present();
-
-- glEnable(GL_BLEND);
-- glDisable(GL_DEPTH_TEST);
-- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+ void DrawOSD();
-
-+ virtual u32 GetTexture(TSP tsp, TCW tcw);
-+};
-
-- glDepthMask(false);
-- glDepthFunc(GL_ALWAYS);
-+bool glesrend::Init()
-+{
-+
-+ if (!gl_init((void*)libPvr_GetRenderTarget(), (void*)libPvr_GetRenderSurface()))
-+ {
-+ return false;
-+ }
-
-+ if (!gl_create_resources())
-+ {
-+ return false;
-+ }
-
-- glDisable(GL_CULL_FACE);
-- glDisable(GL_SCISSOR_TEST);
-+ #if defined(GLES) && HOST_OS != OS_DARWIN && !defined(TARGET_NACL32)
-+ #ifdef TARGET_PANDORA
-+ fbdev = open("/dev/fb0", O_RDONLY);
-+ #else
-+ eglSwapInterval(gl.setup.display,1);
-+ #endif
-+ #endif
-
-+ //clean up all buffers ...
-+ for (int i=0;i<10;i++)
-+ {
-+ glClearColor(0.f, 0.f, 0.f, 0.f);
-+ glClear(GL_COLOR_BUFFER_BIT);
-+ gl_swap();
-+ }
-
-- int dfa=osd_count/4;
-+ return true;
-+}
-
-- for (int i=0;i<dfa;i++)
-- glDrawArrays(GL_TRIANGLE_STRIP,osd_base+i*4,4);
-- }
--#endif
-+void glesrend::Resize(int width, int height)
-+{
-+ screen_width = width;
-+ screen_height = height;
- }
-
--bool ProcessFrame(TA_context* ctx)
-+void glesrend::Term() { };
-+
-+bool glesrend::Process(TA_context* ctx)
- {
- //disable RTTs for now ..
- if (ctx->rend.isRTT)
-@@ -1435,7 +1080,7 @@
- return true;
- }
-
--bool RenderFrame()
-+bool glesrend::Render()
- {
- DoCleanup();
-
-@@ -1737,10 +1382,10 @@
- }
- else
- {
--#if HOST_OS != OS_DARWIN
-- //Fix this in a proper way
-- glBindFramebuffer(GL_FRAMEBUFFER,0);
--#endif
-+ #if HOST_OS != OS_DARWIN
-+ //Fix this in a proper way
-+ glBindFramebuffer(GL_FRAMEBUFFER,0);
-+ #endif
- }
-
- //Clear depth
-@@ -1812,68 +1457,93 @@
- return !is_rtt;
- }
-
--#if !defined(_ANDROID) && !defined(TARGET_NACL32)
--#if HOST_OS==OS_LINUX
--#define SET_AFNT 1
--#endif
--#endif
--
--extern u16 kcode[4];
-+void glesrend::Present()
-+{
-+ gl_swap();
-+ glViewport(0, 0, screen_width, screen_height);
-+}
-
--/*
--bool rend_single_frame()
-+void glesrend::DrawOSD()
- {
-- //wait render start only if no frame pending
-- _pvrrc = DequeueRender();
-+ #ifdef TARGET_PANDORA
-+ GLuint osd_texture = osd_font;
-+ #else
-+ GLuint osd_texture = osd_tex;
-+ #endif
-
-- while (!_pvrrc)
-+ if (!osd_texture)
- {
-- rs.Wait();
-- _pvrrc = DequeueRender();
-+ return;
- }
-
-- bool do_swp=false;
-- //if (kcode[0]&(1<<9))
-- {
-+ verify(glIsProgram(gl.OSD_SHADER.program));
-
-+ #ifndef TARGET_PANDORA
-+ float u = 0;
-+ float v = 0;
-+
-+ for (int i = 0; i < 13; i++)
-+ {
-+ //umin,vmin,umax,vmax
-+ vjoy_pos[i][4]=(u+1)/OSD_TEX_W;
-+ vjoy_pos[i][5]=(v+1)/OSD_TEX_H;
-
-- //clear up & free data ..
-- tactx_Recycle(_pvrrc);
-- _pvrrc=0;
-+ vjoy_pos[i][6]=((u+vjoy_sz[0][i]-1))/OSD_TEX_W;
-+ vjoy_pos[i][7]=((v+vjoy_sz[1][i]-1))/OSD_TEX_H;
-
-- return do_swp;
--}
--*/
-+ u+=vjoy_sz[0][i];
-+ if (u>=OSD_TEX_W)
-+ {
-+ u-=OSD_TEX_W;
-+ v+=vjoy_sz[1][i];
-+ }
-+ //v+=vjoy_pos[i][3];
-+ }
-+ #endif
-
-+ glBindTexture(GL_TEXTURE_2D, osd_texture);
-+ glUseProgram(gl.OSD_SHADER.program);
-
--void rend_set_fb_scale(float x,float y)
--{
-- fb_scale_x=x;
-- fb_scale_y=y;
--}
-+ /*
-+ //reset rendering scale
-
--struct glesrend : Renderer
--{
-- bool Init() { return gles_init(); }
-- void Resize(int w, int h) { screen_width=w; screen_height=h; }
-- void Term() { }
-+ float dc_width=640;
-+ float dc_height=480;
-
-- bool Process(TA_context* ctx) { return ProcessFrame(ctx); }
-- bool Render() { return RenderFrame(); }
-+ float dc2s_scale_h=screen_height/480.0f;
-+ float ds2s_offs_x=(screen_width-dc2s_scale_h*640)/2;
-
-- void Present() { gl_swap(); glViewport(0, 0, screen_width, screen_height); }
-+ //-1 -> too much to left
-+ ShaderUniforms.scale_coefs[0]=2.0f/(screen_width/dc2s_scale_h);
-+ ShaderUniforms.scale_coefs[1]=-2/dc_height;
-+ ShaderUniforms.scale_coefs[2]=1-2*ds2s_offs_x/(screen_width);
-+ ShaderUniforms.scale_coefs[3]=-1;
-
-- void DrawOSD() { OSD_DRAW(); }
-+ glUniform4fv( gl.OSD_SHADER.scale, 1, ShaderUniforms.scale_coefs);
-+ */
-
-- virtual u32 GetTexture(TSP tsp, TCW tcw) {
-- return gl_GetTexture(tsp, tcw);
-- }
--};
-+ glEnable(GL_BLEND);
-+ glDisable(GL_DEPTH_TEST);
-+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
-+ glDepthMask(false);
-+ glDepthFunc(GL_ALWAYS);
-
--#include "deps/libpng/png.h"
-+ glDisable(GL_CULL_FACE);
-+ glDisable(GL_SCISSOR_TEST);
-
--FILE* pngfile;
-+ int dfa = osd_count/4;
-+
-+ for (int i = 0; i < dfa; i++)
-+ {
-+ glDrawArrays(GL_TRIANGLE_STRIP, osd_base + i*4, 4);
-+ }
-+}
-+
-+u32 glesrend::GetTexture(TSP tsp, TCW tcw)
-+{
-+ return gl_GetTexture(tsp, tcw);
-+}
-
- void png_cstd_read(png_structp png_ptr, png_bytep data, png_size_t length)
- {
-@@ -2021,5 +1691,4 @@
- return texture;
- }
-
--
- Renderer* rend_GLES2() { return new glesrend(); }
-diff -Nur a/core/rend/gles/glshaders.cpp b/core/rend/gles/glshaders.cpp
---- a/core/rend/gles/glshaders.cpp 1969-12-31 21:00:00.000000000 -0300
-+++ b/core/rend/gles/glshaders.cpp 2015-10-06 21:51:21.723570329 -0300
-@@ -0,0 +1,280 @@
-+#ifndef GLES
-+#define attr "in"
-+#define vary "out"
-+#else
-+#define attr "attribute"
-+#define vary "varying"
-+#endif
-+#if 1
-+
-+//Fragment and vertex shaders code
-+//pretty much 1:1 copy of the d3d ones for now
-+const char* VertexShaderSource =
-+#ifndef GLES
-+ "#version 140 \n"
-+#endif
-+"\
-+/* Vertex constants*/ \n\
-+uniform highp vec4 scale; \n\
-+uniform highp vec4 depth_scale; \n\
-+uniform highp float sp_FOG_DENSITY; \n\
-+/* Vertex input */ \n\
-+" attr " highp vec4 in_pos; \n\
-+" attr " lowp vec4 in_base; \n\
-+" attr " lowp vec4 in_offs; \n\
-+" attr " mediump vec2 in_uv; \n\
-+/* output */ \n\
-+" vary " lowp vec4 vtx_base; \n\
-+" vary " lowp vec4 vtx_offs; \n\
-+" vary " mediump vec2 vtx_uv; \n\
-+" vary " highp vec3 vtx_xyz; \n\
-+void main() \n\
-+{ \n\
-+ vtx_base=in_base; \n\
-+ vtx_offs=in_offs; \n\
-+ vtx_uv=in_uv; \n\
-+ vec4 vpos=in_pos; \n\
-+ vtx_xyz.xy = vpos.xy; \n\
-+ vtx_xyz.z = vpos.z*sp_FOG_DENSITY; \n\
-+ vpos.w=1.0/vpos.z; \n\
-+ vpos.xy=vpos.xy*scale.xy-scale.zw; \n\
-+ vpos.xy*=vpos.w; \n\
-+ vpos.z=depth_scale.x+depth_scale.y*vpos.w; \n\
-+ gl_Position = vpos; \n\
-+}";
-+
-+
-+#else
-+
-+
-+
-+const char* VertexShaderSource =
-+ ""
-+ "/* Test Projection Matrix */"
-+ ""
-+ "uniform highp mat4 Projection;"
-+ ""
-+ ""
-+ "/* Vertex constants */"
-+ ""
-+ "uniform highp float sp_FOG_DENSITY;"
-+ "uniform highp vec4 scale;"
-+ ""
-+ "/* Vertex output */"
-+ ""
-+ "attribute highp vec4 in_pos;"
-+ "attribute lowp vec4 in_base;"
-+ "attribute lowp vec4 in_offs;"
-+ "attribute mediump vec2 in_uv;"
-+ ""
-+ "/* Transformed input */"
-+ ""
-+ "varying lowp vec4 vtx_base;"
-+ "varying lowp vec4 vtx_offs;"
-+ "varying mediump vec2 vtx_uv;"
-+ "varying highp vec3 vtx_xyz;"
-+ ""
-+ "void main()"
-+ "{"
-+ " vtx_base = in_base;"
-+ " vtx_offs = in_offs;"
-+ " vtx_uv = in_uv;"
-+ ""
-+ " vec4 vpos = in_pos;"
-+ " vtx_xyz.xy = vpos.xy; "
-+ " vtx_xyz.z = vpos.z*sp_FOG_DENSITY; "
-+ ""
-+ " vpos.w = 1.0/vpos.z; "
-+ " vpos.z *= -scale.w; "
-+ " vpos.xy = vpos.xy*scale.xy-sign(scale.xy); "
-+ " vpos.xy *= vpos.w; "
-+ ""
-+ " gl_Position = vpos;"
-+ // " gl_Position = vpos * Projection;"
-+ "}"
-+ ;
-+
-+
-+#endif
-+
-+/*
-+
-+cp_AlphaTest 0 1 2 2
-+pp_ClipTestMode -1 0 1 3 6
-+pp_UseAlpha 0 1 2 12
-+pp_Texture 1
-+ pp_IgnoreTexA 0 1 2 2
-+ pp_ShadInstr 0 1 2 3 4 8
-+ pp_Offset 0 1 2 16
-+ pp_FogCtrl 0 1 2 3 4 64
-+pp_Texture 0
-+ pp_FogCtrl 0 2 3 4 4
-+
-+pp_Texture: off -> 12*4=48 shaders
-+pp_Texture: on -> 12*64=768 shaders
-+Total: 816 shaders
-+
-+highp float fdecp(highp float flt,out highp float e) \n\
-+{ \n\
-+ highp float lg2=log2(flt); //ie , 2.5 \n\
-+ highp float frc=fract(lg2); //ie , 0.5 \n\
-+ e=lg2-frc; //ie , 2.5-0.5=2 (exp) \n\
-+ return pow(2.0,frc); //2^0.5 (manitsa) \n\
-+} \n\
-+lowp float fog_mode2(highp float invW) \n\
-+{ \n\
-+ highp float foginvW=invW; \n\
-+ foginvW=clamp(foginvW,1.0,255.0); \n\
-+ \n\
-+ highp float fogexp; //0 ... 7 \n\
-+ highp float fogman=fdecp(foginvW, fogexp); //[1,2) mantissa bits. that is 1.m \n\
-+ \n\
-+ highp float fogman_hi=fogman*16.0-16.0; //[16,32) -16 -> [0,16) \n\
-+ highp float fogman_idx=floor(fogman_hi); //[0,15] \n\
-+ highp float fogman_blend=fract(fogman_hi); //[0,1) -- can also be fogman_idx-fogman_idx ! \n\
-+ highp float fog_idx_fr=fogexp*16.0+fogman_idx; //[0,127] \n\
-+ \n\
-+ highp float fog_idx_pixel_fr=fog_idx_fr+0.5; \n\
-+ highp float fog_idx_pixel_n=fog_idx_pixel_fr/128.0;//normalise to [0.5/128,127.5/128) coordinates \n\
-+ \n\
-+ //fog is 128x1 texure \n\
-+ lowp vec2 fog_coefs=texture2D(fog_table,vec2(fog_idx_pixel_n)).rg; \n\
-+ \n\
-+ lowp float fog_coef=mix(fog_coefs.r,fog_coefs.g,fogman_blend); \n\
-+ \n\
-+ return fog_coef; \n\
-+} \n\
-+*/
-+
-+#ifndef GLES
-+#define FRAGCOL "FragColor"
-+#define TEXLOOKUP "texture"
-+#define vary "in"
-+#else
-+#define FRAGCOL "gl_FragColor"
-+#define TEXLOOKUP "texture2D"
-+#endif
-+
-+
-+const char* PixelPipelineShader =
-+#ifndef GLES
-+ "#version 140 \n"
-+ "out vec4 FragColor; \n"
-+#endif
-+"\
-+\
-+#define cp_AlphaTest %d \n\
-+#define pp_ClipTestMode %d.0 \n\
-+#define pp_UseAlpha %d \n\
-+#define pp_Texture %d \n\
-+#define pp_IgnoreTexA %d \n\
-+#define pp_ShadInstr %d \n\
-+#define pp_Offset %d \n\
-+#define pp_FogCtrl %d \n\
-+/* Shader program params*/ \n\
-+/* gles has no alpha test stage, so its emulated on the shader */ \n\
-+uniform lowp float cp_AlphaTestValue; \n\
-+uniform lowp vec4 pp_ClipTest; \n\
-+uniform lowp vec3 sp_FOG_COL_RAM,sp_FOG_COL_VERT; \n\
-+uniform highp vec2 sp_LOG_FOG_COEFS; \n\
-+uniform sampler2D tex,fog_table; \n\
-+/* Vertex input*/ \n\
-+" vary " lowp vec4 vtx_base; \n\
-+" vary " lowp vec4 vtx_offs; \n\
-+" vary " mediump vec2 vtx_uv; \n\
-+" vary " highp vec3 vtx_xyz; \n\
-+lowp float fog_mode2(highp float val) \n\
-+{ \n\
-+ highp float fog_idx=clamp(val,0.0,127.99); \n\
-+ return clamp(sp_LOG_FOG_COEFS.y*log2(fog_idx)+sp_LOG_FOG_COEFS.x,0.001,1.0); //the clamp is required due to yet another bug !\n\
-+} \n\
-+void main() \n\
-+{ \n\
-+ lowp vec4 color=vtx_base; \n\
-+ #if pp_UseAlpha==0 \n\
-+ color.a=1.0; \n\
-+ #endif\n\
-+ #if pp_FogCtrl==3 \n\
-+ color=vec4(sp_FOG_COL_RAM.rgb,fog_mode2(vtx_xyz.z)); \n\
-+ #endif\n\
-+ #if pp_Texture==1 \n\
-+ { \n\
-+ lowp vec4 texcol=" TEXLOOKUP "(tex,vtx_uv); \n\
-+ \n\
-+ #if pp_IgnoreTexA==1 \n\
-+ texcol.a=1.0; \n\
-+ #endif\n\
-+ \n\
-+ #if pp_ShadInstr==0 \n\
-+ { \n\
-+ color.rgb=texcol.rgb; \n\
-+ color.a=texcol.a; \n\
-+ } \n\
-+ #endif\n\
-+ #if pp_ShadInstr==1 \n\
-+ { \n\
-+ color.rgb*=texcol.rgb; \n\
-+ color.a=texcol.a; \n\
-+ } \n\
-+ #endif\n\
-+ #if pp_ShadInstr==2 \n\
-+ { \n\
-+ color.rgb=mix(color.rgb,texcol.rgb,texcol.a); \n\
-+ } \n\
-+ #endif\n\
-+ #if pp_ShadInstr==3 \n\
-+ { \n\
-+ color*=texcol; \n\
-+ } \n\
-+ #endif\n\
-+ \n\
-+ #if pp_Offset==1 \n\
-+ { \n\
-+ color.rgb+=vtx_offs.rgb; \n\
-+ if (pp_FogCtrl==1) \n\
-+ color.rgb=mix(color.rgb,sp_FOG_COL_VERT.rgb,vtx_offs.a); \n\
-+ } \n\
-+ #endif\n\
-+ } \n\
-+ #endif\n\
-+ #if pp_FogCtrl==0 \n\
-+ { \n\
-+ color.rgb=mix(color.rgb,sp_FOG_COL_RAM.rgb,fog_mode2(vtx_xyz.z)); \n\
-+ } \n\
-+ #endif\n\
-+ #if cp_AlphaTest == 1 \n\
-+ if (cp_AlphaTestValue>color.a) discard;\n\
-+ #endif \n\
-+ //color.rgb=vec3(vtx_xyz.z/255.0);\n\
-+ " FRAGCOL "=color; \n\
-+}";
-+
-+const char* ModifierVolumeShader =
-+#ifndef GLES
-+ "#version 140 \n"
-+ "out vec4 FragColor; \n"
-+#endif
-+" \
-+uniform lowp float sp_ShaderColor; \n\
-+/* Vertex input*/ \n\
-+void main() \n\
-+{ \n\
-+ " FRAGCOL "=vec4(0.0, 0.0, 0.0, sp_ShaderColor); \n\
-+}";
-+
-+const char* OSD_Shader =
-+#ifndef GLES
-+ "#version 140 \n"
-+ "out vec4 FragColor; \n"
-+#endif
-+" \
-+" vary " lowp vec4 vtx_base; \n\
-+" vary " mediump vec2 vtx_uv; \n\
-+/* Vertex input*/ \n\
-+uniform sampler2D tex; \n\
-+void main() \n\
-+{ \n\
-+ mediump vec2 uv=vtx_uv; \n\
-+ uv.y=1.0-uv.y; \n\
-+ " FRAGCOL "=vtx_base*" TEXLOOKUP "(tex,uv.st); \n\n\
-+}";
-diff -Nur a/core/rend/gles/glshaders.h b/core/rend/gles/glshaders.h
---- a/core/rend/gles/glshaders.h 1969-12-31 21:00:00.000000000 -0300
-+++ b/core/rend/gles/glshaders.h 2015-10-06 21:51:21.723570329 -0300
-@@ -0,0 +1,5 @@
-+#pragma once
-+extern const char* VertexShaderSource;
-+extern const char* PixelPipelineShader;
-+extern const char* ModifierVolumeShader;
-+extern const char* OSD_Shader;
-\ No newline at end of file