mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-18 03:59:14 +01:00
6bdcde9dd6
It changes the string in the Android backend select to just OpenGL ES. Adds a check in the Android code to check for Tegra 4 and to enable the option to select the OpenGL ES backend. Adds a DriverDetails bug under BUG_ISTEGRA as a blanket case of Tegra 4 support. The changes that effects most lines in this change. Removing all float suffixes in the pixel/vertex/util shaders since OpenGL ES 2 doesn't support float suffixes. Disables the shaders for reinterpreting the EFB format since Tegra 4 doesn't support integers. Changes GLFunctions.cpp to grab the correct Tegra extension functions. Readds the GLSL 1.2 'hacks' as GLSLES2 'hacks' since they are required for GLSL ES 2 Adds a GLSLES2 to the GLSL_VERSION enum. Disable the SamplerCache on Tegra since Tegra doesn't support samplers... Enable glBufferSubData on Tegra since it is the only mobile GPU to correctly work with it. Disable glDrawRangeElements on Tegra since it doesn't support it, This uses glDrawElements instead.
100 lines
2.5 KiB
C++
100 lines
2.5 KiB
C++
|
|
#ifndef _RENDER_H_
|
|
#define _RENDER_H_
|
|
|
|
#include "RenderBase.h"
|
|
|
|
namespace OGL
|
|
{
|
|
|
|
void ClearEFBCache();
|
|
|
|
enum GLSL_VERSION {
|
|
GLSL_130,
|
|
GLSL_140,
|
|
GLSL_150, // and above
|
|
GLSLES2,
|
|
GLSLES3
|
|
};
|
|
|
|
// ogl-only config, so not in VideoConfig.h
|
|
extern struct VideoConfig {
|
|
bool bSupportsGLSLCache;
|
|
bool bSupportsGLPinnedMemory;
|
|
bool bSupportsGLSync;
|
|
bool bSupportsGLBaseVertex;
|
|
bool bSupportCoverageMSAA;
|
|
bool bSupportSampleShading;
|
|
GLSL_VERSION eSupportedGLSLVersion;
|
|
bool bSupportOGL31;
|
|
|
|
const char *gl_vendor;
|
|
const char *gl_renderer;
|
|
const char* gl_version;
|
|
const char* glsl_version;
|
|
|
|
s32 max_samples;
|
|
} g_ogl_config;
|
|
|
|
class Renderer : public ::Renderer
|
|
{
|
|
public:
|
|
Renderer();
|
|
~Renderer();
|
|
|
|
static void Init();
|
|
static void Shutdown();
|
|
|
|
void SetColorMask();
|
|
void SetBlendMode(bool forceUpdate);
|
|
void SetScissorRect(const TargetRectangle& rc);
|
|
void SetGenerationMode();
|
|
void SetDepthMode();
|
|
void SetLogicOpMode();
|
|
void SetDitherMode();
|
|
void SetLineWidth();
|
|
void SetSamplerState(int stage,int texindex);
|
|
void SetInterlacingMode();
|
|
|
|
// TODO: Implement and use these
|
|
void ApplyState(bool bUseDstAlpha) {}
|
|
void RestoreState() {}
|
|
|
|
void RenderText(const char* pstr, int left, int top, u32 color);
|
|
void DrawDebugInfo();
|
|
void FlipImageData(u8 *data, int w, int h);
|
|
|
|
u32 AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data);
|
|
|
|
void ResetAPIState();
|
|
void RestoreAPIState();
|
|
|
|
TargetRectangle ConvertEFBRectangle(const EFBRectangle& rc);
|
|
|
|
void Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& rc,float Gamma);
|
|
|
|
void ClearScreen(const EFBRectangle& rc, bool colorEnable, bool alphaEnable, bool zEnable, u32 color, u32 z);
|
|
|
|
void ReinterpretPixelData(unsigned int convtype);
|
|
|
|
void UpdateViewport(Matrix44& vpCorrection);
|
|
|
|
bool SaveScreenshot(const std::string &filename, const TargetRectangle &rc);
|
|
|
|
void SetPSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4);
|
|
void SetPSConstant4fv(unsigned int const_number, const float *f);
|
|
void SetMultiPSConstant4fv(unsigned int const_number, unsigned int count, const float *f);
|
|
|
|
void SetVSConstant4f(unsigned int const_number, float f1, float f2, float f3, float f4);
|
|
void SetVSConstant4fv(unsigned int const_number, const float *f);
|
|
void SetMultiVSConstant3fv(unsigned int const_number, unsigned int count, const float *f);
|
|
void SetMultiVSConstant4fv(unsigned int const_number, unsigned int count, const float *f);
|
|
|
|
private:
|
|
void UpdateEFBCache(EFBAccessType type, u32 cacheRectIdx, const EFBRectangle& efbPixelRc, const TargetRectangle& targetPixelRc, const u32* data);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|