flycast/core/rend/gles/gles.h

129 lines
2.5 KiB
C
Raw Normal View History

2013-12-19 17:10:14 +00:00
#pragma once
#include "rend/rend.h"
#ifdef GLES
#if defined(TARGET_IPHONE) //apple-specific ogles2 headers
//#include <APPLE/egl.h>
#include <OpenGLES/ES2/gl.h>
#include <OpenGLES/ES2/glext.h>
#else
#if !defined(TARGET_NACL32)
#include <EGL/egl.h>
#endif
2013-12-19 17:10:14 +00:00
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#endif
2013-12-19 17:10:14 +00:00
#ifndef GL_NV_draw_path
//IMGTEC GLES emulation
#pragma comment(lib,"libEGL.lib")
#pragma comment(lib,"libGLESv2.lib")
#else /* NV gles emulation*/
#pragma comment(lib,"libGLES20.lib")
#endif
2013-12-19 17:10:14 +00:00
#else
#if HOST_OS == OS_DARWIN
#include <OpenGL/gl3.h>
#else
#include <GL3/gl3w.h>
2013-12-19 17:10:14 +00:00
#endif
#endif
#define glCheck() do { if (unlikely(settings.validate.OpenGlChecks)) { verify(glGetError()==GL_NO_ERROR); } } while(0)
#define eglCheck() false
2013-12-19 17:10:14 +00:00
#define VERTEX_POS_ARRAY 0
#define VERTEX_COL_BASE_ARRAY 1
#define VERTEX_COL_OFFS_ARRAY 2
#define VERTEX_UV_ARRAY 3
//vertex types
extern u32 gcflip;
extern float scale_x, scale_y;
2013-12-19 17:10:14 +00:00
void DrawStrips();
struct PipelineShader
{
GLuint program;
GLuint scale,depth_scale;
GLuint pp_ClipTest,cp_AlphaTestValue;
GLuint sp_FOG_COL_RAM,sp_FOG_COL_VERT,sp_FOG_DENSITY,sp_LOG_FOG_COEFS;
//
u32 cp_AlphaTest; s32 pp_ClipTestMode;
u32 pp_Texture, pp_UseAlpha, pp_IgnoreTexA, pp_ShadInstr, pp_Offset, pp_FogCtrl;
};
struct gl_ctx
{
#if defined(GLES) && HOST_OS != OS_DARWIN && !defined(TARGET_NACL32)
2013-12-19 17:10:14 +00:00
struct
{
EGLNativeWindowType native_wind;
EGLNativeDisplayType native_disp;
EGLDisplay display;
EGLSurface surface;
EGLContext context;
} setup;
#endif
2013-12-19 17:10:14 +00:00
struct
{
GLuint program;
GLuint scale,depth_scale;
GLuint sp_ShaderColor;
} modvol_shader;
PipelineShader pogram_table[768*2];
struct
{
GLuint program,scale,depth_scale;
} OSD_SHADER;
struct
{
GLuint geometry,modvols,idxs,idxs2;
#ifndef GLES
GLuint vao;
#endif
2013-12-19 17:10:14 +00:00
} vbo;
//GLuint matrix;
};
extern gl_ctx gl;
GLuint gl_GetTexture(TSP tsp,TCW tcw);
struct text_info {
u16* pdata;
u32 width;
u32 height;
u32 textype; // 0 565, 1 1555, 2 4444
};
text_info raw_GetTexture(TSP tsp, TCW tcw);
void CollectCleanup();
void DoCleanup();
2018-05-10 19:28:20 +00:00
void SortPParams(int first, int count);
2013-12-19 17:10:14 +00:00
void BindRTT(u32 addy, u32 fbw, u32 fbh, u32 channels, u32 fmt);
2018-05-08 16:47:00 +00:00
void ReadRTTBuffer();
2013-12-19 17:10:14 +00:00
int GetProgramID(u32 cp_AlphaTest, u32 pp_ClipTestMode,
u32 pp_Texture, u32 pp_UseAlpha, u32 pp_IgnoreTexA, u32 pp_ShadInstr, u32 pp_Offset,
u32 pp_FogCtrl);
bool CompilePipelineShader(PipelineShader* s);
2013-12-19 17:10:14 +00:00
#define TEXTURE_LOAD_ERROR 0
GLuint loadPNG(const string& subpath, int &width, int &height);