mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-28 18:45:54 -05:00
Cleanup.
This commit is contained in:
parent
9b8fd71478
commit
99af670622
1 changed files with 26 additions and 28 deletions
54
src/bgfx.cpp
54
src/bgfx.cpp
|
@ -1329,9 +1329,24 @@ namespace bgfx
|
||||||
|
|
||||||
static RendererDestroyFn s_rendererDestroyFn;
|
static RendererDestroyFn s_rendererDestroyFn;
|
||||||
|
|
||||||
bool windowsVersionIsOrAbove(uint32_t _version)
|
struct Condition
|
||||||
|
{
|
||||||
|
enum Enum
|
||||||
|
{
|
||||||
|
LessEqual,
|
||||||
|
GreaterEqual,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
bool windowsVersionIs(Condition::Enum _op, uint32_t _version)
|
||||||
{
|
{
|
||||||
#if BX_PLATFORM_WINDOWS
|
#if BX_PLATFORM_WINDOWS
|
||||||
|
static const uint8_t s_condition[] =
|
||||||
|
{
|
||||||
|
VER_LESS_EQUAL,
|
||||||
|
VER_GREATER_EQUAL,
|
||||||
|
};
|
||||||
|
|
||||||
OSVERSIONINFOEXA ovi;
|
OSVERSIONINFOEXA ovi;
|
||||||
memset(&ovi, 0, sizeof(ovi) );
|
memset(&ovi, 0, sizeof(ovi) );
|
||||||
ovi.dwOSVersionInfoSize = sizeof(ovi);
|
ovi.dwOSVersionInfoSize = sizeof(ovi);
|
||||||
|
@ -1342,30 +1357,8 @@ namespace bgfx
|
||||||
ovi.dwMajorVersion = HIBYTE(_version);
|
ovi.dwMajorVersion = HIBYTE(_version);
|
||||||
ovi.dwMinorVersion = LOBYTE(_version);
|
ovi.dwMinorVersion = LOBYTE(_version);
|
||||||
DWORDLONG cond = 0;
|
DWORDLONG cond = 0;
|
||||||
VER_SET_CONDITION(cond, VER_MAJORVERSION, VER_GREATER_EQUAL);
|
VER_SET_CONDITION(cond, VER_MAJORVERSION, s_condition[_op]);
|
||||||
VER_SET_CONDITION(cond, VER_MINORVERSION, VER_GREATER_EQUAL);
|
VER_SET_CONDITION(cond, VER_MINORVERSION, s_condition[_op]);
|
||||||
return !!VerifyVersionInfoA(&ovi, VER_MAJORVERSION | VER_MINORVERSION, cond);
|
|
||||||
#else
|
|
||||||
BX_UNUSED(_version);
|
|
||||||
return false;
|
|
||||||
#endif // BX_PLATFORM_WINDOWS
|
|
||||||
}
|
|
||||||
|
|
||||||
bool windowsVersionIsOrBellow(uint32_t _version)
|
|
||||||
{
|
|
||||||
#if BX_PLATFORM_WINDOWS
|
|
||||||
OSVERSIONINFOEXA ovi;
|
|
||||||
memset(&ovi, 0, sizeof(ovi));
|
|
||||||
ovi.dwOSVersionInfoSize = sizeof(ovi);
|
|
||||||
// _WIN32_WINNT_WINBLUE 0x0603
|
|
||||||
// _WIN32_WINNT_WIN8 0x0602
|
|
||||||
// _WIN32_WINNT_WIN7 0x0601
|
|
||||||
// _WIN32_WINNT_VISTA 0x0600
|
|
||||||
ovi.dwMajorVersion = HIBYTE(_version);
|
|
||||||
ovi.dwMinorVersion = LOBYTE(_version);
|
|
||||||
DWORDLONG cond = 0;
|
|
||||||
VER_SET_CONDITION(cond, VER_MAJORVERSION, VER_LESS_EQUAL);
|
|
||||||
VER_SET_CONDITION(cond, VER_MINORVERSION, VER_LESS_EQUAL);
|
|
||||||
return !!VerifyVersionInfoA(&ovi, VER_MAJORVERSION | VER_MINORVERSION, cond);
|
return !!VerifyVersionInfoA(&ovi, VER_MAJORVERSION | VER_MINORVERSION, cond);
|
||||||
#else
|
#else
|
||||||
BX_UNUSED(_version);
|
BX_UNUSED(_version);
|
||||||
|
@ -1383,14 +1376,14 @@ again:
|
||||||
RendererType::Enum first = RendererType::Direct3D9;
|
RendererType::Enum first = RendererType::Direct3D9;
|
||||||
RendererType::Enum second = RendererType::Direct3D11;
|
RendererType::Enum second = RendererType::Direct3D11;
|
||||||
|
|
||||||
if (windowsVersionIsOrAbove(0x0603) )
|
if (windowsVersionIs(Condition::GreaterEqual, 0x0603) )
|
||||||
{
|
{
|
||||||
first = RendererType::Direct3D11 /* Direct3D12 */;
|
first = RendererType::Direct3D11 /* Direct3D12 */;
|
||||||
second = RendererType::Direct3D11;
|
second = RendererType::Direct3D11;
|
||||||
if (!s_rendererCreator[second].supported)
|
if (!s_rendererCreator[second].supported)
|
||||||
second = RendererType::Direct3D9;
|
second = RendererType::Direct3D9;
|
||||||
}
|
}
|
||||||
else if (windowsVersionIsOrAbove(0x0601) )
|
else if (windowsVersionIs(Condition::GreaterEqual, 0x0601) )
|
||||||
{
|
{
|
||||||
first = RendererType::Direct3D11;
|
first = RendererType::Direct3D11;
|
||||||
second = RendererType::Direct3D9;
|
second = RendererType::Direct3D9;
|
||||||
|
@ -1913,7 +1906,12 @@ again:
|
||||||
uint8_t num = 0;
|
uint8_t num = 0;
|
||||||
for (uint8_t ii = 0; ii < uint8_t(RendererType::Count); ++ii)
|
for (uint8_t ii = 0; ii < uint8_t(RendererType::Count); ++ii)
|
||||||
{
|
{
|
||||||
if ((ii == RendererType::Direct3D11) && windowsVersionIsOrBellow(0x0502)) continue;
|
if (RendererType::Direct3D11 == ii
|
||||||
|
&& windowsVersionIs(Condition::LessEqual, 0x0502) )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (s_rendererCreator[ii].supported)
|
if (s_rendererCreator[ii].supported)
|
||||||
{
|
{
|
||||||
_enum[num++] = RendererType::Enum(ii);
|
_enum[num++] = RendererType::Enum(ii);
|
||||||
|
|
Loading…
Reference in a new issue