ソースを参照

Added more info to fatal messages.

bkaradzic 13 年 前
コミット
82335a6be1
3 ファイル変更37 行追加12 行削除
  1. 15 1
      src/bgfx.cpp
  2. 10 9
      src/bgfx_p.h
  3. 12 2
      src/renderer_d3d9.cpp

+ 15 - 1
src/bgfx.cpp

@@ -47,6 +47,20 @@ namespace bgfx
 	static BX_THREAD uint32_t s_threadIndex = 0;
 	static Context s_ctx;
 
+	void fatal(bgfx::Fatal::Enum _code, const char* _format, ...)
+	{
+		char temp[8192];
+
+		va_list argList;
+		va_start(argList, _format);
+		vsnprintf(temp, sizeof(temp), _format, argList);
+		va_end(argList);
+
+		temp[sizeof(temp)-1] = '\0';
+
+		g_fatal(_code, temp);
+	}
+
 	inline void vec_mul_mtx(float* __restrict _result, const float* __restrict _vec, const float* __restrict _mat)
 	{
 		_result[0] = _vec[0] * _mat[ 0] + _vec[1] * _mat[4] + _vec[2] * _mat[ 8] + _vec[3] * _mat[12];
@@ -696,7 +710,7 @@ namespace bgfx
 		return mem;
 	}
 
-	void free(Memory* _mem)
+	void release(Memory* _mem)
 	{
 		g_free(_mem);
 	}

+ 10 - 9
src/bgfx_p.h

@@ -34,11 +34,11 @@ extern void dbgPrintfData(const void* _data, uint32_t _size, const char* _format
 				} while(0)
 #endif // 0
 
-#define BGFX_FATAL(_condition, _err, _str) \
+#define BGFX_FATAL(_condition, _err, _format, ...) \
 			do { \
 				if (!(_condition) ) \
 				{ \
-					g_fatal(_err, _str); \
+					fatal(_err, _format, ##__VA_ARGS__); \
 				} \
 			} while(0)
 
@@ -204,7 +204,8 @@ namespace bgfx
 	extern fatalFn g_fatal;
 	extern reallocFn g_realloc;
 	extern freeFn g_free;
-	extern void free(Memory* _mem);
+	extern void fatal(bgfx::Fatal::Enum _code, const char* _format, ...);
+	extern void release(Memory* _mem);
 	extern void saveTga(const char* _filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _data);
 	extern const char* getAttribName(Attrib::Enum _attr);
 
@@ -2065,7 +2066,7 @@ namespace bgfx
 
 						rendererCreateIndexBuffer(handle, mem);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 
@@ -2133,7 +2134,7 @@ namespace bgfx
 
 						rendererCreateVertexBuffer(handle, mem, declHandle);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 
@@ -2177,7 +2178,7 @@ namespace bgfx
 
 						rendererCreateVertexShader(handle, mem);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 
@@ -2200,7 +2201,7 @@ namespace bgfx
 
 						rendererCreateFragmentShader(handle, mem);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 
@@ -2250,7 +2251,7 @@ namespace bgfx
 
 						rendererCreateTexture(handle, mem, flags);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 
@@ -2328,7 +2329,7 @@ namespace bgfx
 
 						rendererSaveScreenShot(mem);
 
-						free(mem);
+						release(mem);
 					}
 					break;
 

+ 12 - 2
src/renderer_d3d9.cpp

@@ -188,8 +188,18 @@ namespace bgfx
 			BGFX_FATAL( (D3DPTEXTURECAPS_SQUAREONLY & m_caps.TextureCaps) == 0, bgfx::Fatal::MinimumRequiredSpecs, "D3DPTEXTURECAPS_SQUAREONLY");
 			BGFX_FATAL( (D3DPTEXTURECAPS_MIPMAP & m_caps.TextureCaps) == D3DPTEXTURECAPS_MIPMAP, bgfx::Fatal::MinimumRequiredSpecs, "D3DPTEXTURECAPS_MIPMAP");
 			BGFX_FATAL( (D3DPTEXTURECAPS_ALPHA & m_caps.TextureCaps) == D3DPTEXTURECAPS_ALPHA, bgfx::Fatal::MinimumRequiredSpecs, "D3DPTEXTURECAPS_ALPHA");
-			BGFX_FATAL( (m_caps.VertexShaderVersion&0x300) == 0x300 &&  (m_caps.PixelShaderVersion&0x300) == 0x300, bgfx::Fatal::MinimumRequiredSpecs, "Shader Version is not 3.0.");
-			BGFX_FATAL(m_caps.MaxTextureWidth >= 2048 && m_caps.MaxTextureHeight >= 2048, bgfx::Fatal::MinimumRequiredSpecs, "Maximum texture size is below 2048.");
+			BGFX_FATAL(m_caps.VertexShaderVersion >= D3DVS_VERSION(3, 0) && m_caps.PixelShaderVersion >= D3DPS_VERSION(3, 0)
+					  , bgfx::Fatal::MinimumRequiredSpecs
+					  , "Shader Version is not 3.0 (vs: %x, ps: %x)."
+					  , m_caps.VertexShaderVersion
+					  , m_caps.PixelShaderVersion
+					  );
+			BGFX_FATAL(m_caps.MaxTextureWidth >= 2048 && m_caps.MaxTextureHeight >= 2048
+					  , bgfx::Fatal::MinimumRequiredSpecs
+					  , "Maximum texture size is below 2048 (w: %d, h: %d)."
+					  , m_caps.MaxTextureWidth
+					  , m_caps.MaxTextureHeight
+					  );
 
 			m_fmtNULL = SUCCEEDED(m_d3d9->CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_TEXTURE, D3DFMT_NULL) );
 			m_fmtDF16 = SUCCEEDED(m_d3d9->CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_TEXTURE, D3DFMT_DF16) );