Update to latest bgfx and fix for latest mingw releases (nw)

This commit is contained in:
Miodrag Milanovic 2015-04-01 12:45:19 +02:00
parent 33387befdb
commit 26214cc6ec
10 changed files with 141 additions and 66 deletions

View File

@ -3254,7 +3254,7 @@ static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int
unsigned char *tga_data; unsigned char *tga_data;
unsigned char *tga_palette = NULL; unsigned char *tga_palette = NULL;
int i, j; int i, j;
unsigned char raw_data[4]; unsigned char raw_data[4] = {};
int RLE_count = 0; int RLE_count = 0;
int RLE_repeating = 0; int RLE_repeating = 0;
int read_next_pixel = 1; int read_next_pixel = 1;

View File

@ -217,12 +217,14 @@ OS=darwin
BUILD_PROJECT_DIR=gmake-osx BUILD_PROJECT_DIR=gmake-osx
BUILD_OUTPUT_DIR=osx64_clang BUILD_OUTPUT_DIR=osx64_clang
BUILD_TOOLS_CONFIG=release64 BUILD_TOOLS_CONFIG=release64
BUILD_TOOLS_SUFFIX=Release
EXE= EXE=
else else
OS=linux OS=linux
BUILD_PROJECT_DIR=gmake-linux BUILD_PROJECT_DIR=gmake-linux
BUILD_OUTPUT_DIR=linux64_gcc BUILD_OUTPUT_DIR=linux64_gcc
BUILD_TOOLS_CONFIG=release64 BUILD_TOOLS_CONFIG=release64
BUILD_TOOLS_SUFFIX=Release
EXE= EXE=
endif endif
else else
@ -230,19 +232,16 @@ OS=windows
BUILD_PROJECT_DIR=gmake-mingw-gcc BUILD_PROJECT_DIR=gmake-mingw-gcc
BUILD_OUTPUT_DIR=win32_mingw-gcc BUILD_OUTPUT_DIR=win32_mingw-gcc
BUILD_TOOLS_CONFIG=release32 BUILD_TOOLS_CONFIG=release32
BUILD_TOOLS_SUFFIX=Release
EXE=.exe EXE=.exe
endif endif
.build/$(BUILD_OUTPUT_DIR)/bin/shadercRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR) tools/bin/$(OS)/shaderc$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
$(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f shaderc.make config=$(BUILD_TOOLS_CONFIG) $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f shaderc.make config=$(BUILD_TOOLS_CONFIG)
$(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/shaderc$(BUILD_TOOLS_SUFFIX)$(EXE) $(@)
tools/bin/$(OS)/shaderc$(EXE): .build/$(BUILD_OUTPUT_DIR)/bin/shadercRelease$(EXE) tools/bin/$(OS)/geometryc$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
$(SILENT) cp $(<) $(@)
.build/$(BUILD_OUTPUT_DIR)/bin/geometrycRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
$(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f geometryc.make config=$(BUILD_TOOLS_CONFIG) $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) -f geometryc.make config=$(BUILD_TOOLS_CONFIG)
$(SILENT) cp .build/$(BUILD_OUTPUT_DIR)/bin/geometryc$(BUILD_TOOLS_SUFFIX)$(EXE) $(@)
tools/bin/$(OS)/geometryc$(EXE): .build/$(BUILD_OUTPUT_DIR)/bin/geometrycRelease$(EXE)
$(SILENT) cp $(<) $(@)
tools: tools/bin/$(OS)/shaderc$(EXE) tools/bin/$(OS)/geometryc$(EXE) tools: tools/bin/$(OS)/shaderc$(EXE) tools/bin/$(OS)/geometryc$(EXE)

View File

@ -543,20 +543,23 @@ namespace bgfx { namespace d3d11
g_caps.gpu[ii].deviceId = (uint16_t)desc.DeviceId; g_caps.gpu[ii].deviceId = (uint16_t)desc.DeviceId;
++g_caps.numGPUs; ++g_caps.numGPUs;
if ( (BGFX_PCI_ID_NONE != g_caps.vendorId || 0 != g_caps.deviceId) if (NULL == m_adapter)
&& (BGFX_PCI_ID_NONE == g_caps.vendorId || desc.VendorId == g_caps.vendorId)
&& ( 0 == g_caps.deviceId || desc.DeviceId == g_caps.deviceId) )
{ {
m_adapter = adapter; if ( (BGFX_PCI_ID_NONE != g_caps.vendorId || 0 != g_caps.deviceId)
m_adapter->AddRef(); && (BGFX_PCI_ID_NONE == g_caps.vendorId || desc.VendorId == g_caps.vendorId)
m_driverType = D3D_DRIVER_TYPE_UNKNOWN; && ( 0 == g_caps.deviceId || desc.DeviceId == g_caps.deviceId) )
} {
m_adapter = adapter;
m_adapter->AddRef();
m_driverType = D3D_DRIVER_TYPE_UNKNOWN;
}
if (BX_ENABLED(BGFX_CONFIG_DEBUG_PERFHUD) if (BX_ENABLED(BGFX_CONFIG_DEBUG_PERFHUD)
&& 0 != strstr(description, "PerfHUD") ) && 0 != strstr(description, "PerfHUD") )
{ {
m_adapter = adapter; m_adapter = adapter;
m_driverType = D3D_DRIVER_TYPE_REFERENCE; m_driverType = D3D_DRIVER_TYPE_REFERENCE;
}
} }
} }
@ -696,6 +699,7 @@ namespace bgfx { namespace d3d11
m_numWindows = 1; m_numWindows = 1;
#if !defined(__MINGW32__)
if (BX_ENABLED(BGFX_CONFIG_DEBUG) ) if (BX_ENABLED(BGFX_CONFIG_DEBUG) )
{ {
ID3D11InfoQueue* infoQueue; ID3D11InfoQueue* infoQueue;
@ -727,6 +731,7 @@ namespace bgfx { namespace d3d11
setGraphicsDebuggerPresent(true); setGraphicsDebuggerPresent(true);
} }
} }
#endif // __MINGW__
UniformHandle handle = BGFX_INVALID_HANDLE; UniformHandle handle = BGFX_INVALID_HANDLE;
for (uint32_t ii = 0; ii < PredefinedUniform::Count; ++ii) for (uint32_t ii = 0; ii < PredefinedUniform::Count; ++ii)

View File

@ -49,26 +49,48 @@ BX_PRAGMA_DIAGNOSTIC_POP()
# define D3D_FEATURE_LEVEL_11_1 D3D_FEATURE_LEVEL(0xb100) # define D3D_FEATURE_LEVEL_11_1 D3D_FEATURE_LEVEL(0xb100)
#endif // D3D_FEATURE_LEVEL_11_1 #endif // D3D_FEATURE_LEVEL_11_1
#if defined(__MINGW32__)
// MinGW Linux/Wine missing defines... // MinGW Linux/Wine missing defines...
#ifndef D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT # ifndef D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
# define D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT 8 # define D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT 8
#endif // D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT # endif // D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
#ifndef D3D11_PS_CS_UAV_REGISTER_COUNT # ifndef D3D11_PS_CS_UAV_REGISTER_COUNT
# define D3D11_PS_CS_UAV_REGISTER_COUNT 8 # define D3D11_PS_CS_UAV_REGISTER_COUNT 8
#endif // D3D11_PS_CS_UAV_REGISTER_COUNT # endif // D3D11_PS_CS_UAV_REGISTER_COUNT
#ifndef D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT # ifndef D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT
# define D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT 8 # define D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT 8
#endif # endif
#ifndef D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT # ifndef D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
# define D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT 8 # define D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT 8
#endif // D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT # endif // D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
#ifndef D3D11_APPEND_ALIGNED_ELEMENT # ifndef D3D11_APPEND_ALIGNED_ELEMENT
# define D3D11_APPEND_ALIGNED_ELEMENT UINT32_MAX # define D3D11_APPEND_ALIGNED_ELEMENT UINT32_MAX
#endif // D3D11_APPEND_ALIGNED_ELEMENT # endif // D3D11_APPEND_ALIGNED_ELEMENT
# ifndef D3D11_REQ_MAXANISOTROPY
# define D3D11_REQ_MAXANISOTROPY 16
# endif // D3D11_REQ_MAXANISOTROPY
# ifndef D3D11_FEATURE_DATA_FORMAT_SUPPORT
typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT
{
DXGI_FORMAT InFormat;
UINT OutFormatSupport;
} D3D11_FEATURE_DATA_FORMAT_SUPPORT;
# endif // D3D11_FEATURE_DATA_FORMAT_SUPPORT
# ifndef D3D11_FEATURE_DATA_FORMAT_SUPPORT2
typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2
{
DXGI_FORMAT InFormat;
UINT OutFormatSupport2;
} D3D11_FEATURE_DATA_FORMAT_SUPPORT2;
# endif // D3D11_FEATURE_DATA_FORMAT_SUPPORT2
#endif // __MINGW32__
namespace bgfx { namespace d3d11 namespace bgfx { namespace d3d11
{ {

View File

@ -380,20 +380,22 @@ namespace bgfx { namespace d3d9
g_caps.gpu[ii].vendorId = (uint16_t)desc.VendorId; g_caps.gpu[ii].vendorId = (uint16_t)desc.VendorId;
g_caps.gpu[ii].deviceId = (uint16_t)desc.DeviceId; g_caps.gpu[ii].deviceId = (uint16_t)desc.DeviceId;
if ( (BGFX_PCI_ID_NONE != g_caps.vendorId || 0 != g_caps.deviceId) if (D3DADAPTER_DEFAULT == m_adapter)
&& (BGFX_PCI_ID_NONE == g_caps.vendorId || desc.VendorId == g_caps.vendorId)
&& ( 0 == g_caps.deviceId || desc.DeviceId == g_caps.deviceId) )
{ {
m_adapter = ii; if ( (BGFX_PCI_ID_NONE != g_caps.vendorId || 0 != g_caps.deviceId)
} && (BGFX_PCI_ID_NONE == g_caps.vendorId || desc.VendorId == g_caps.vendorId)
&& ( 0 == g_caps.deviceId || desc.DeviceId == g_caps.deviceId) )
{
m_adapter = ii;
}
#if BGFX_CONFIG_DEBUG_PERFHUD if (BX_ENABLED(BGFX_CONFIG_DEBUG_PERFHUD)
if (0 != strstr(desc.Description, "PerfHUD") ) && 0 != strstr(desc.Description, "PerfHUD"))
{ {
m_adapter = ii; m_adapter = ii;
m_deviceType = D3DDEVTYPE_REF; m_deviceType = D3DDEVTYPE_REF;
}
} }
#endif // BGFX_CONFIG_DEBUG_PERFHUD
} }
} }

View File

@ -516,6 +516,26 @@ namespace bgfx { namespace gl
bool m_initialize; bool m_initialize;
}; };
// Extension registry
//
// ANGLE:
// https://github.com/google/angle/tree/master/extensions
//
// CHROMIUM:
// https://chromium.googlesource.com/chromium/src.git/+/refs/heads/git-svn/gpu/GLES2/extensions/CHROMIUM
//
// EGL:
// https://www.khronos.org/registry/egl/extensions/
//
// GL:
// https://www.opengl.org/registry/
//
// GLES:
// https://www.khronos.org/registry/gles/extensions/
//
// WEBGL:
// https://www.khronos.org/registry/webgl/extensions/
//
static Extension s_extension[] = static Extension s_extension[] =
{ {
{ "AMD_conservative_depth", false, true }, { "AMD_conservative_depth", false, true },

View File

@ -8,6 +8,13 @@
#if SHADERC_CONFIG_DIRECT3D11 #if SHADERC_CONFIG_DIRECT3D11
#include <d3dcompiler.h> #include <d3dcompiler.h>
#include <d3d11shader.h>
#ifndef D3D_SVF_USED
# define D3D_SVF_USED 2
#endif // D3D_SVF_USED
static const GUID GUID_ID3D11ShaderReflection = { 0x0a233719, 0x3960, 0x4578, { 0x9d, 0x7c, 0x20, 0x3b, 0x8b, 0x1d, 0x9c, 0xc1 } };
struct RemapInputSemantic struct RemapInputSemantic
{ {
@ -202,7 +209,7 @@ bool compileHLSLShaderDx11(bx::CommandLine& _cmdLine, const std::string& _code,
ID3D11ShaderReflection* reflect = NULL; ID3D11ShaderReflection* reflect = NULL;
hr = D3DReflect(code->GetBufferPointer() hr = D3DReflect(code->GetBufferPointer()
, code->GetBufferSize() , code->GetBufferSize()
, IID_ID3D11ShaderReflection , GUID_ID3D11ShaderReflection
, (void**)&reflect , (void**)&reflect
); );
if (FAILED(hr) ) if (FAILED(hr) )

View File

@ -19,6 +19,7 @@ function toolchain(_buildDir, _libDir)
{ "asmjs", "Emscripten/asm.js" }, { "asmjs", "Emscripten/asm.js" },
{ "freebsd", "FreeBSD" }, { "freebsd", "FreeBSD" },
{ "linux-gcc", "Linux (GCC compiler)" }, { "linux-gcc", "Linux (GCC compiler)" },
{ "linux-gcc-5", "Linux (GCC-5 compiler)" },
{ "linux-clang", "Linux (Clang compiler)" }, { "linux-clang", "Linux (Clang compiler)" },
{ "ios-arm", "iOS - ARM" }, { "ios-arm", "iOS - ARM" },
{ "ios-simulator", "iOS - Simulator" }, { "ios-simulator", "iOS - Simulator" },
@ -164,6 +165,12 @@ function toolchain(_buildDir, _libDir)
elseif "linux-gcc" == _OPTIONS["gcc"] then elseif "linux-gcc" == _OPTIONS["gcc"] then
location (path.join(_buildDir, "projects", _ACTION .. "-linux")) location (path.join(_buildDir, "projects", _ACTION .. "-linux"))
elseif "linux-gcc-5" == _OPTIONS["gcc"] then
premake.gcc.cc = "gcc-5"
premake.gcc.cxx = "g++-5"
premake.gcc.ar = "ar"
location (path.join(_buildDir, "projects", _ACTION .. "-linux"))
elseif "linux-clang" == _OPTIONS["gcc"] then elseif "linux-clang" == _OPTIONS["gcc"] then
premake.gcc.cc = "clang" premake.gcc.cc = "clang"
premake.gcc.cxx = "clang++" premake.gcc.cxx = "clang++"
@ -465,13 +472,26 @@ function toolchain(_buildDir, _libDir)
} }
buildoptions { "-m64" } buildoptions { "-m64" }
configuration { "linux-gcc and not linux-clang" } configuration { "linux-clang" }
configuration { "linux-gcc-5" }
buildoptions {
-- "-fno-omit-frame-pointer",
-- "-fsanitize=address",
-- "-fsanitize=undefined",
-- "-fsanitize=float-divide-by-zero",
-- "-fsanitize=float-cast-overflow",
}
links {
-- "asan",
-- "ubsan",
}
configuration { "linux-g*" }
buildoptions { buildoptions {
"-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic. "-mfpmath=sse", -- force SSE to get 32-bit and 64-bit builds deterministic.
} }
configuration { "linux-clang" }
configuration { "linux-*" } configuration { "linux-*" }
buildoptions { buildoptions {
"-msse2", "-msse2",
@ -489,7 +509,7 @@ function toolchain(_buildDir, _libDir)
"-Wl,--gc-sections", "-Wl,--gc-sections",
} }
configuration { "linux-gcc", "x32" } configuration { "linux-g*", "x32" }
targetdir (path.join(_buildDir, "linux32_gcc/bin")) targetdir (path.join(_buildDir, "linux32_gcc/bin"))
objdir (path.join(_buildDir, "linux32_gcc/obj")) objdir (path.join(_buildDir, "linux32_gcc/obj"))
libdirs { path.join(_libDir, "lib/linux32_gcc") } libdirs { path.join(_libDir, "lib/linux32_gcc") }
@ -497,7 +517,7 @@ function toolchain(_buildDir, _libDir)
"-m32", "-m32",
} }
configuration { "linux-gcc", "x64" } configuration { "linux-g*", "x64" }
targetdir (path.join(_buildDir, "linux64_gcc/bin")) targetdir (path.join(_buildDir, "linux64_gcc/bin"))
objdir (path.join(_buildDir, "linux64_gcc/obj")) objdir (path.join(_buildDir, "linux64_gcc/obj"))
libdirs { path.join(_libDir, "lib/linux64_gcc") } libdirs { path.join(_libDir, "lib/linux64_gcc") }

View File

@ -449,13 +449,13 @@ project "bgfx"
MAME_DIR .. "3rdparty/bgfx/3rdparty", MAME_DIR .. "3rdparty/bgfx/3rdparty",
MAME_DIR .. "3rdparty/bx/include", MAME_DIR .. "3rdparty/bx/include",
MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos",
MAME_DIR .. "3rdparty/dxsdk/Include",
} }
includeosd() includeosd()
configuration { "vs*" } configuration { "vs*" }
includedirs { includedirs {
MAME_DIR .. "3rdparty/dxsdk/Include",
MAME_DIR .. "3rdparty/bx/include/compat/msvc", MAME_DIR .. "3rdparty/bx/include/compat/msvc",
} }
configuration { "mingw*" } configuration { "mingw*" }