diff --git a/Engine/source/gfx/D3D11/gfxD3D11Device.cpp b/Engine/source/gfx/D3D11/gfxD3D11Device.cpp index c0b3ee338..01bb795d7 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Device.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11Device.cpp @@ -1764,3 +1764,76 @@ void GFXD3D11Device::setDebugMarker(ColorI color, const char *name) D3DPERF_SetMarker(D3DCOLOR_ARGB(color.alpha, color.red, color.green, color.blue), (LPCWSTR)&eventName); } + +const char* GFXD3D11Device::interpretDebugResult(long result) +{ + const char* error; + + switch (result) { + case S_OK: + error = "S_OK"; + break; + case S_FALSE: + error = "S_FALSE"; + break; + //generics + case E_UNEXPECTED: + error = "E_UNEXPECTED"; + break; + case E_NOTIMPL: + error = "E_NOTIMPL"; + break; + case E_OUTOFMEMORY: + error = "E_OUTOFMEMORY"; + break; + case E_INVALIDARG: + error = "E_INVALIDARG"; + break; + case E_NOINTERFACE: + error = "E_NOINTERFACE"; + break; + case E_POINTER: + error = "E_POINTER"; + break; + case E_HANDLE: + error = "E_HANDLE"; + break; + case E_ABORT: + error = "E_ABORT"; + break; + case E_FAIL: + error = "E_FAIL"; + break; + case E_ACCESSDENIED: + error = "E_ACCESSDENIED"; + break; + + //graphics specific + case DXGI_ERROR_INVALID_CALL: + error = "DXGI_ERROR_INVALID_CALL"; + break; + case DXGI_ERROR_WAS_STILL_DRAWING: + error = "DXGI_ERROR_WAS_STILL_DRAWING"; + break; + + //dx11 specific + case D3D11_ERROR_FILE_NOT_FOUND: + error = "D3D11_ERROR_FILE_NOT_FOUND"; + break; + case D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS: + error = "D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS"; + break; + case D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS: + error = "D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS"; + break; + case D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: + error = "D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD"; + break; + + + default: + error = "UNKNOWN"; + break; + } + return error; +} diff --git a/Engine/source/gfx/D3D11/gfxD3D11Device.h b/Engine/source/gfx/D3D11/gfxD3D11Device.h index 3ecc76ca9..9fd853b86 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Device.h +++ b/Engine/source/gfx/D3D11/gfxD3D11Device.h @@ -255,7 +255,7 @@ public: virtual void setClipRect( const RectI &rect ); virtual const RectI& getClipRect() const { return mClipRect; } - // } + // } @@ -325,6 +325,7 @@ public: // grab the sampler map const SamplerMap &getSamplersMap() const { return mSamplersMap; } SamplerMap &getSamplersMap(){ return mSamplersMap; } + const char* interpretDebugResult(long result); }; #endif diff --git a/Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp b/Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp index 810cd17d5..b5cc29725 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp @@ -77,7 +77,7 @@ GFXD3D11StateBlock::GFXD3D11StateBlock(const GFXStateBlockDesc& desc) if (FAILED(hr)) { - AssertFatal(false, "GFXD3D11StateBlock::GFXD3D11StateBlock - CreateBlendState call failure."); + AssertFatal(false, avar("GFXD3D11StateBlock::GFXD3D11StateBlock - CreateBlendState call failure: %s.", GFX->interpretDebugResult(hr))); } ZeroMemory(&mDepthStencilDesc, sizeof(D3D11_DEPTH_STENCIL_DESC)); diff --git a/Engine/source/gfx/gfxDevice.h b/Engine/source/gfx/gfxDevice.h index 1cb7a41fc..7b80aef3d 100644 --- a/Engine/source/gfx/gfxDevice.h +++ b/Engine/source/gfx/gfxDevice.h @@ -428,7 +428,7 @@ public: virtual void enterDebugEvent(ColorI color, const char *name) = 0; virtual void leaveDebugEvent() = 0; virtual void setDebugMarker(ColorI color, const char *name) = 0; - + virtual const char* interpretDebugResult(long result) { return "Not Implemented"; }; /// @} /// @name Resource debug methods diff --git a/Engine/source/gfx/gl/gfxGLDevice.h b/Engine/source/gfx/gl/gfxGLDevice.h index 179957db2..df35ad724 100644 --- a/Engine/source/gfx/gl/gfxGLDevice.h +++ b/Engine/source/gfx/gl/gfxGLDevice.h @@ -160,7 +160,7 @@ public: const U32 getNumVertexStreams() const { return mNumVertexStream; } bool glUseMap() const { return mUseGlMap; } - + const char* interpretDebugResult(long result) { return "Not Implemented"; }; protected: /// Called by GFXDevice to create a device specific stateblock virtual GFXStateBlockRef createStateBlockInternal(const GFXStateBlockDesc& desc);