浏览代码

dx11 debugresult interpreter method (plugged into where we are finding issues with the material::mul switch on stateblocks

AzaezelX 6 年之前
父节点
当前提交
5112a98388

+ 73 - 0
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),
    D3DPERF_SetMarker(D3DCOLOR_ARGB(color.alpha, color.red, color.green, color.blue),
       (LPCWSTR)&eventName);
       (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;
+}

+ 2 - 1
Engine/source/gfx/D3D11/gfxD3D11Device.h

@@ -255,7 +255,7 @@ public:
    virtual void setClipRect( const RectI &rect );
    virtual void setClipRect( const RectI &rect );
    virtual const RectI& getClipRect() const { return mClipRect; }
    virtual const RectI& getClipRect() const { return mClipRect; }
 
 
-   // }
+   // }   
 
 
 
 
    
    
@@ -325,6 +325,7 @@ public:
    // grab the sampler map
    // grab the sampler map
    const SamplerMap &getSamplersMap() const { return mSamplersMap; }
    const SamplerMap &getSamplersMap() const { return mSamplersMap; }
    SamplerMap &getSamplersMap(){ return mSamplersMap; }
    SamplerMap &getSamplersMap(){ return mSamplersMap; }
+   const char* interpretDebugResult(long result);
 };
 };
 
 
 #endif
 #endif

+ 1 - 1
Engine/source/gfx/D3D11/gfxD3D11StateBlock.cpp

@@ -77,7 +77,7 @@ GFXD3D11StateBlock::GFXD3D11StateBlock(const GFXStateBlockDesc& desc)
 
 
    if (FAILED(hr))
    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));
    ZeroMemory(&mDepthStencilDesc, sizeof(D3D11_DEPTH_STENCIL_DESC));

+ 1 - 1
Engine/source/gfx/gfxDevice.h

@@ -428,7 +428,7 @@ public:
    virtual void enterDebugEvent(ColorI color, const char *name) = 0;
    virtual void enterDebugEvent(ColorI color, const char *name) = 0;
    virtual void leaveDebugEvent() = 0;
    virtual void leaveDebugEvent() = 0;
    virtual void setDebugMarker(ColorI color, const char *name) = 0;
    virtual void setDebugMarker(ColorI color, const char *name) = 0;
-
+   virtual const char* interpretDebugResult(long result) { return "Not Implemented"; };
    /// @}
    /// @}
 
 
    /// @name Resource debug methods
    /// @name Resource debug methods

+ 1 - 1
Engine/source/gfx/gl/gfxGLDevice.h

@@ -160,7 +160,7 @@ public:
    const U32 getNumVertexStreams() const { return mNumVertexStream; }
    const U32 getNumVertexStreams() const { return mNumVertexStream; }
 
 
    bool glUseMap() const { return mUseGlMap; }   
    bool glUseMap() const { return mUseGlMap; }   
-      
+   const char* interpretDebugResult(long result) { return "Not Implemented"; };
 protected:   
 protected:   
    /// Called by GFXDevice to create a device specific stateblock
    /// Called by GFXDevice to create a device specific stateblock
    virtual GFXStateBlockRef createStateBlockInternal(const GFXStateBlockDesc& desc);
    virtual GFXStateBlockRef createStateBlockInternal(const GFXStateBlockDesc& desc);