mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-12 23:54:35 +00:00
- fixes and improvements for survey code.
Check for Windows on ARM and do proper checks for GLES. 32 bit checks are still retained to catch non-official builds that disable the compile check.
This commit is contained in:
parent
46d9564507
commit
15c5728f01
4 changed files with 28 additions and 11 deletions
|
@ -44,7 +44,8 @@
|
||||||
|
|
||||||
static TArray<FString> m_Extensions;
|
static TArray<FString> m_Extensions;
|
||||||
RenderContext gl;
|
RenderContext gl;
|
||||||
static double realglversion; // this is public so the statistics code can access it.
|
static double realglversion;
|
||||||
|
static bool bindless;
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
|
@ -156,7 +157,7 @@ void gl_LoadExtensions()
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (strstr(gl.vendorstring, "ATI Tech"))
|
if (strstr(gl.vendorstring, "ATI Tech"))
|
||||||
{
|
{
|
||||||
gl.flags |= RFL_NO_CLIP_PLANES; // gl_ClipDistance is horribly broken on ATI GL3 drivers for Windows. (TBD: Relegate to vintage build? Maybe after the next survey.)
|
gl.flags |= RFL_NO_CLIP_PLANES; // gl_ClipDistance is horribly broken on ATI GL3 drivers for Windows.
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
gl.glslversion = 3.31f; // Force GLSL down to 3.3.
|
gl.glslversion = 3.31f; // Force GLSL down to 3.3.
|
||||||
|
@ -201,6 +202,8 @@ void gl_LoadExtensions()
|
||||||
|
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl.max_texturesize);
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl.max_texturesize);
|
||||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
|
bindless = CheckExtension("GL_ARB_bindless_texture");
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -247,9 +250,14 @@ void gl_PrintStartupLog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setGlVersion(double glv)
|
||||||
|
{
|
||||||
|
realglversion = glv;
|
||||||
|
}
|
||||||
|
|
||||||
std::pair<double, bool> gl_getInfo()
|
std::pair<double, bool> gl_getInfo()
|
||||||
{
|
{
|
||||||
// gl_ARB_bindless_texture is the closest we can get to determine Vulkan support from OpenGL.
|
// gl_ARB_bindless_texture is the closest we can get to determine Vulkan support from OpenGL.
|
||||||
// This isn't foolproof because Intel doesn't support it but for NVidia and AMD support of this extension means Vulkan support.
|
// This isn't foolproof because Intel doesn't support it but for NVidia and AMD support of this extension means Vulkan support.
|
||||||
return std::make_pair(realglversion, CheckExtension("GL_ARB_bindless_texture"));
|
return std::make_pair(realglversion, bindless);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ public:
|
||||||
explicit OpenGLFrameBuffer() {}
|
explicit OpenGLFrameBuffer() {}
|
||||||
OpenGLFrameBuffer(void *hMonitor, bool fullscreen) ;
|
OpenGLFrameBuffer(void *hMonitor, bool fullscreen) ;
|
||||||
~OpenGLFrameBuffer();
|
~OpenGLFrameBuffer();
|
||||||
|
int Backend() override { return 0; }
|
||||||
|
|
||||||
void InitializeState() override;
|
void InitializeState() override;
|
||||||
void Update() override;
|
void Update() override;
|
||||||
|
|
|
@ -9,6 +9,7 @@ CVAR(Bool, gles_use_mapped_buffer, false, 0);
|
||||||
CVAR(Bool, gles_force_glsl_v100, false, 0);
|
CVAR(Bool, gles_force_glsl_v100, false, 0);
|
||||||
CVAR(Int, gles_max_lights_per_surface, 32, 0);
|
CVAR(Int, gles_max_lights_per_surface, 32, 0);
|
||||||
EXTERN_CVAR(Bool, gl_customshader);
|
EXTERN_CVAR(Bool, gl_customshader);
|
||||||
|
void setGlVersion(double glv);
|
||||||
|
|
||||||
|
|
||||||
#if USE_GLES2
|
#if USE_GLES2
|
||||||
|
@ -191,5 +192,9 @@ namespace OpenGLESRenderer
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
||||||
|
|
||||||
|
const char* glversion = (const char*)glGetString(GL_VERSION);
|
||||||
|
setGlVersion( strtod(glversion, NULL));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,20 +176,24 @@ bool I_HTTPRequest(const char* request)
|
||||||
static int GetOSVersion()
|
static int GetOSVersion()
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
#ifndef _M_ARM64
|
||||||
if (sizeof(void*) == 4) // 32 bit
|
if (sizeof(void*) == 4) // 32 bit
|
||||||
{
|
{
|
||||||
BOOL res;
|
BOOL res;
|
||||||
if (IsWow64Process(GetCurrentProcess(), &res) && res)
|
if (IsWow64Process(GetCurrentProcess(), &res) && res)
|
||||||
{
|
{
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sys_ostype == 2) return 3;
|
if (sys_ostype == 2) return 2;
|
||||||
else return 4;
|
else return 3;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return 4;
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif defined __APPLE__
|
#elif defined __APPLE__
|
||||||
|
|
||||||
|
@ -198,9 +202,8 @@ static int GetOSVersion()
|
||||||
#else
|
#else
|
||||||
return 5;
|
return 5;
|
||||||
#endif
|
#endif
|
||||||
#else
|
|
||||||
|
|
||||||
// fall-through linux stuff here
|
#else // fall-through linux stuff here
|
||||||
#ifdef __arm__
|
#ifdef __arm__
|
||||||
return 9;
|
return 9;
|
||||||
#else
|
#else
|
||||||
|
@ -264,12 +267,12 @@ static int GetCoreInfo()
|
||||||
|
|
||||||
static int GetRenderInfo()
|
static int GetRenderInfo()
|
||||||
{
|
{
|
||||||
|
if (screen->Backend() == 0) return 1;
|
||||||
if (screen->Backend() == 1) return 4;
|
if (screen->Backend() == 1) return 4;
|
||||||
auto info = gl_getInfo();
|
auto info = gl_getInfo();
|
||||||
if (!info.second)
|
if (!info.second)
|
||||||
{
|
{
|
||||||
if ((screen->hwcaps & (RFL_SHADER_STORAGE_BUFFER | RFL_BUFFER_STORAGE)) == (RFL_SHADER_STORAGE_BUFFER | RFL_BUFFER_STORAGE)) return 2;
|
return 2;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue