]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
FX11 updated.
authorToni Wilen <twilen@winuae.net>
Sat, 21 Nov 2020 12:45:01 +0000 (14:45 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 21 Nov 2020 12:45:01 +0000 (14:45 +0200)
18 files changed:
od-win32/FX11/Effect.h
od-win32/FX11/EffectAPI.cpp
od-win32/FX11/EffectBinaryFormat.h
od-win32/FX11/EffectLoad.cpp
od-win32/FX11/EffectLoad.h
od-win32/FX11/EffectNonRuntime.cpp
od-win32/FX11/EffectReflection.cpp
od-win32/FX11/EffectRuntime.cpp
od-win32/FX11/EffectStateBase11.h
od-win32/FX11/EffectStates11.h
od-win32/FX11/EffectVariable.inl
od-win32/FX11/IUnknownImp.h
od-win32/FX11/LICENSE
od-win32/FX11/SOParser.h
od-win32/FX11/d3dx11effect.h
od-win32/FX11/d3dxGlobal.cpp
od-win32/FX11/d3dxGlobal.h
od-win32/FX11/pchfx.h

index fb69a460edd4c5f1f7334dfd6c3bbb637b73a8c5..aafea4a4b4812d7837426eb1aafa1ee816bf70e0 100644 (file)
@@ -3,12 +3,8 @@
 //
 //  Direct3D 11 Effects Header for ID3DX11Effect Implementation
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -201,18 +197,18 @@ struct SType : public ID3DX11EffectType
     };
 
 
-    SType() :
+    SType() noexcept :
        VarType(EVT_Invalid),
        Elements(0),
        pTypeName(nullptr),
        TotalSize(0),
        Stride(0),
-       PackedSize(0)
+       PackedSize(0),
+       StructType{}
     {
-        C_ASSERT( sizeof(NumericType) <= sizeof(StructType) );
-        C_ASSERT( sizeof(ObjectType) <= sizeof(StructType) );
-        C_ASSERT( sizeof(InterfaceType) <= sizeof(StructType) );
-        ZeroMemory( &StructType, sizeof(StructType) );
+        static_assert(sizeof(NumericType) <= sizeof(StructType), "SType union issue");
+        static_assert(sizeof(ObjectType) <= sizeof(StructType), "SType union issue");
+        static_assert(sizeof(InterfaceType) <= sizeof(StructType), "SType union issue");
     }
 
     bool IsEqual(SType *pOtherType) const;
@@ -293,6 +289,11 @@ struct SSingleElementType : public ID3DX11EffectType
     STDMETHOD_(LPCSTR, GetMemberSemantic)(uint32_t Index) override { return ((SType*)pType)->GetMemberSemantic(Index); }
 
     IUNKNOWN_IMP(SSingleElementType, ID3DX11EffectType, IUnknown);
+
+    SSingleElementType() noexcept :
+        pType(nullptr)
+    {
+    }
 };
 
 //////////////////////////////////////////////////////////////////////////
@@ -310,7 +311,7 @@ struct SBaseBlock
     uint32_t        AssignmentCount;
     SAssignment     *pAssignments;
 
-    SBaseBlock();
+    SBaseBlock() noexcept;
 
     bool ApplyAssignments(CEffect *pEffect);
 
@@ -358,7 +359,7 @@ struct STechnique : public ID3DX11EffectTechnique
     bool        InitiallyValid;
     bool        HasDependencies;
 
-    STechnique();
+    STechnique() noexcept;
 
     STDMETHOD_(bool, IsValid)() override;
     STDMETHOD(GetDesc)(_Out_ D3DX11_TECHNIQUE_DESC *pDesc) override;
@@ -387,7 +388,7 @@ struct SGroup : public ID3DX11EffectGroup
     bool        InitiallyValid;
     bool        HasDependencies;
 
-    SGroup();
+    SGroup() noexcept;
 
     STDMETHOD_(bool, IsValid)() override;
     STDMETHOD(GetDesc)(_Out_ D3DX11_GROUP_DESC *pDesc) override;
@@ -441,7 +442,7 @@ struct SPassBlock : SBaseBlock, public ID3DX11EffectPass
     bool        InitiallyValid;         // validity of all state objects and shaders in pass upon BindToDevice
     bool        HasDependencies;        // if pass expressions or pass state blocks have dependencies on variables (if true, IsValid != InitiallyValid possibly)
 
-    SPassBlock();
+    SPassBlock() noexcept;
 
     void ApplyPassAssignments();
     bool CheckShaderDependencies( _In_ const SShaderBlock* pBlock );
@@ -476,7 +477,7 @@ struct SDepthStencilBlock : SBaseBlock
     D3D11_DEPTH_STENCIL_DESC BackingStore;
     bool                     IsValid;
 
-    SDepthStencilBlock();
+    SDepthStencilBlock() noexcept;
 };
 
 struct SBlendBlock : SBaseBlock
@@ -485,7 +486,7 @@ struct SBlendBlock : SBaseBlock
     D3D11_BLEND_DESC        BackingStore;
     bool                    IsValid;
 
-    SBlendBlock();
+    SBlendBlock() noexcept;
 };
 
 struct SRasterizerBlock : SBaseBlock
@@ -494,7 +495,7 @@ struct SRasterizerBlock : SBaseBlock
     D3D11_RASTERIZER_DESC   BackingStore;
     bool                    IsValid;
 
-    SRasterizerBlock();
+    SRasterizerBlock() noexcept;
 };
 
 struct SSamplerBlock : SBaseBlock
@@ -507,16 +508,16 @@ struct SSamplerBlock : SBaseBlock
         SShaderResource     *pTexture;
     } BackingStore;
 
-    SSamplerBlock();
+    SSamplerBlock() noexcept;
 };
 
 struct SInterface
 {
     SClassInstanceGlobalVariable* pClassInstance;
 
-    SInterface()
+    SInterface() noexcept :
+        pClassInstance(nullptr)
     {
-        pClassInstance = nullptr;
     }
 };
 
@@ -524,36 +525,40 @@ struct SShaderResource
 {
     ID3D11ShaderResourceView *pShaderResource;
 
-    SShaderResource() 
+    SShaderResource() noexcept :
+        pShaderResource(nullptr)
     {
-        pShaderResource = nullptr;
     }
-
 };
 
 struct SUnorderedAccessView
 {
     ID3D11UnorderedAccessView *pUnorderedAccessView;
 
-    SUnorderedAccessView() 
+    SUnorderedAccessView() noexcept :
+        pUnorderedAccessView(nullptr)
     {
-        pUnorderedAccessView = nullptr;
     }
-
 };
 
 struct SRenderTargetView
 {
     ID3D11RenderTargetView *pRenderTargetView;
 
-    SRenderTargetView();
+    SRenderTargetView() noexcept :
+        pRenderTargetView(nullptr)
+    {
+    }
 };
 
 struct SDepthStencilView
 {
     ID3D11DepthStencilView *pDepthStencilView;
 
-    SDepthStencilView();
+    SDepthStencilView() noexcept :
+        pDepthStencilView(nullptr)
+    {
+    }
 };
 
 
@@ -565,12 +570,12 @@ template<class T, class D3DTYPE> struct SShaderDependency
     T       *ppFXPointers;              // Array of ptrs to FX objects (CBs, SShaderResources, etc)
     D3DTYPE *ppD3DObjects;              // Array of ptrs to matching D3D objects
 
-    SShaderDependency()
+    SShaderDependency() noexcept :
+        StartIndex(0),
+        Count(0),
+        ppFXPointers(nullptr),
+        ppD3DObjects(nullptr)
     {
-        StartIndex = Count = 0;
-
-        ppD3DObjects = nullptr;
-        ppFXPointers = nullptr;
     }
 };
 
@@ -649,7 +654,7 @@ struct SShaderBlock
     ID3DBlob                        *pInputSignatureBlob;   // The input signature is separated from the bytecode because it 
                                                             // is always available, even after Optimize() has been called.
 
-    SShaderBlock(SD3DShaderVTable *pVirtualTable = nullptr);
+    SShaderBlock(SD3DShaderVTable *pVirtualTable = nullptr) noexcept;
 
     EObjectType GetShaderType();
 
@@ -676,7 +681,10 @@ struct SString
 {
     char *pString;
 
-    SString();
+    SString() noexcept :
+        pString(nullptr)
+    {
+    }
 };
 
 
@@ -713,7 +721,7 @@ struct SVariable
     char                    *pSemantic;
     uint32_t                ExplicitBindPoint;
 
-    SVariable()
+    SVariable() noexcept
     {
         ZeroMemory(this, sizeof(*this));
         ExplicitBindPoint = uint32_t(-1);
@@ -732,7 +740,7 @@ struct SAnonymousShader : public TUncastableVariable<ID3DX11EffectShaderVariable
 {
     SShaderBlock    *pShaderBlock;
 
-    SAnonymousShader(_In_opt_ SShaderBlock *pBlock = nullptr);
+    SAnonymousShader(_In_opt_ SShaderBlock *pBlock = nullptr) noexcept;
 
     // ID3DX11EffectShaderVariable interface
     STDMETHOD_(bool, IsValid)() override;
@@ -820,27 +828,28 @@ struct SConstantBuffer : public TUncastableVariable<ID3DX11EffectConstantBuffer>
 
     CEffect                 *pEffect;
 
-    SConstantBuffer()
+    SConstantBuffer() noexcept :
+        pD3DObject(nullptr),
+        TBuffer{},
+        pBackingStore(nullptr),
+        Size(0),
+        pName(nullptr),
+        AnnotationCount(0),
+        pAnnotations(nullptr),
+        VariableCount(0),
+        pVariables(nullptr),
+        ExplicitBindPoint(uint32_t(-1)),
+        IsDirty(false),
+        IsTBuffer(false),
+        IsUserManaged(false),
+        IsEffectOptimized(false),
+        IsUsedByExpression(false),
+        IsUserPacked(false),
+        IsSingle(false),
+        IsNonUpdatable(false),
+        pMemberData(nullptr),
+        pEffect(nullptr)
     {
-        pD3DObject = nullptr;
-        ZeroMemory(&TBuffer, sizeof(TBuffer));
-        ExplicitBindPoint = uint32_t(-1);
-        pBackingStore = nullptr;
-        Size = 0;
-        pName = nullptr;
-        VariableCount = 0;
-        pVariables = nullptr;
-        AnnotationCount = 0;
-        pAnnotations = nullptr;
-        IsDirty = false;
-        IsTBuffer = false;
-        IsUserManaged = false;
-        IsEffectOptimized = false;
-        IsUsedByExpression = false;
-        IsUserPacked = false;
-        IsSingle = false;
-        IsNonUpdatable = false;
-        pEffect = nullptr;
     }
 
     bool ClonedSingle() const;
@@ -927,9 +936,9 @@ struct SAssignment
     {
         SGlobalVariable *pVariable;
 
-        SDependency()
+        SDependency() noexcept :
+            pVariable(nullptr)
         {
-            pVariable = nullptr;
         }
     };
 
@@ -958,19 +967,17 @@ struct SAssignment
         return IsObjectAssignmentHelper(LhsType);
     }
 
-    SAssignment()
+    SAssignment() noexcept :
+        LhsType(ELHS_Invalid),
+        AssignmentType(ERAT_Invalid),
+        LastRecomputedTime(0),
+        DependencyCount(0),
+        pDependencies(nullptr),
+        Destination{0},
+        Source{0},
+        DataSize(0),
+        MaxElements(0)
     {
-        LhsType = ELHS_Invalid;
-        AssignmentType = ERAT_Invalid;
-
-        Destination.pGeneric = nullptr;
-        Source.pGeneric = nullptr;
-
-        LastRecomputedTime = 0;
-        DependencyCount = 0;
-        pDependencies = nullptr;
-
-        DataSize = 0;
     }
 };
 
@@ -1039,7 +1046,7 @@ public:
         return (pData >= m_pData && pData < (m_pData + m_dwBufferSize));
     }
 
-    CEffectHeap();
+    CEffectHeap() noexcept;
     ~CEffectHeap();
 };
 
@@ -1201,7 +1208,7 @@ protected:
     friend struct SConstantBuffer;
 
 public:
-    CEffect( uint32_t Flags = 0 );
+    CEffect( uint32_t Flags = 0 ) noexcept;
     virtual ~CEffect();
     void ReleaseShaderRefection();
 
index cd920eb6785c6da24bb2c43cf10dedf2473264ad..5fd561a5bd4a00601111162da0294deb206f6fb1 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Effect API entry point
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -23,16 +19,16 @@ using namespace D3DX11Effects;
 
 struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } };
 
-typedef public std::unique_ptr<void, handle_closer> ScopedHandle;
+typedef std::unique_ptr<void, handle_closer> ScopedHandle;
 
-inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? 0 : h; }
+inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? nullptr : h; }
 
 //-------------------------------------------------------------------------------------
 
 static HRESULT LoadBinaryFromFile( _In_z_ LPCWSTR pFileName, _Inout_ std::unique_ptr<uint8_t[]>& data, _Out_ uint32_t& size )
 {
     // open the file
-#if (0 && _WIN32_WINNT >= _WIN32_WINNT_WIN8)
+#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
     ScopedHandle hFile( safe_handle( CreateFile2( pFileName,
                                                   GENERIC_READ,
                                                   FILE_SHARE_READ,
@@ -54,27 +50,20 @@ static HRESULT LoadBinaryFromFile( _In_z_ LPCWSTR pFileName, _Inout_ std::unique
     }
 
     // Get the file size
-    LARGE_INTEGER FileSize = { 0 };
-
-#if (0 && _WIN32_WINNT >= _WIN32_WINNT_VISTA)
     FILE_STANDARD_INFO fileInfo;
     if ( !GetFileInformationByHandleEx( hFile.get(), FileStandardInfo, &fileInfo, sizeof(fileInfo) ) )
     {
         return HRESULT_FROM_WIN32( GetLastError() );
     }
-    FileSize = fileInfo.EndOfFile;
-#else
-    GetFileSizeEx( hFile.get(), &FileSize );
-#endif
 
     // File is too big for 32-bit allocation or contains no data, so reject read
-    if ( !FileSize.LowPart || FileSize.HighPart > 0)
+    if ( !fileInfo.EndOfFile.LowPart || fileInfo.EndOfFile.HighPart > 0 )
     {
         return E_FAIL;
     }
 
     // create enough space for the file data
-    data.reset( new uint8_t[ FileSize.LowPart ] );
+    data.reset( new uint8_t[ fileInfo.EndOfFile.LowPart ] );
     if (!data)
     {
         return E_OUTOFMEMORY;
@@ -84,7 +73,7 @@ static HRESULT LoadBinaryFromFile( _In_z_ LPCWSTR pFileName, _Inout_ std::unique
     DWORD BytesRead = 0;
     if (!ReadFile( hFile.get(),
                    data.get(),
-                   FileSize.LowPart,
+                   fileInfo.EndOfFile.LowPart,
                    &BytesRead,
                    nullptr
                  ))
@@ -92,7 +81,7 @@ static HRESULT LoadBinaryFromFile( _In_z_ LPCWSTR pFileName, _Inout_ std::unique
         return HRESULT_FROM_WIN32( GetLastError() );
     }
 
-    if (BytesRead < FileSize.LowPart)
+    if (BytesRead < fileInfo.EndOfFile.LowPart)
     {
         return E_FAIL;
     }
@@ -179,20 +168,9 @@ lExit:
     return hr;
 }
 
-typedef HRESULT(WINAPI* D3DCOMPILE)(LPCVOID pSrcData,
-       SIZE_T SrcDataSize,
-       LPCSTR pSourceName,
-       CONST D3D_SHADER_MACRO* pDefines,
-       ID3DInclude* pInclude,
-       LPCSTR pEntrypoint,
-       LPCSTR pTarget,
-       UINT Flags1,
-       UINT Flags2,
-       ID3DBlob** ppCode,
-       ID3DBlob** ppErrorMsgs);
-extern D3DCOMPILE ppD3DCompile;
 
 //--------------------------------------------------------------------------------------
+
 _Use_decl_annotations_
 HRESULT D3DX11CompileEffectFromMemory( LPCVOID pData, SIZE_T DataLength, LPCSTR srcName,
                                        const D3D_SHADER_MACRO *pDefines, ID3DInclude *pInclude, UINT HLSLFlags, UINT FXFlags,
@@ -208,7 +186,7 @@ HRESULT D3DX11CompileEffectFromMemory( LPCVOID pData, SIZE_T DataLength, LPCSTR
     }
 
     ID3DBlob *blob = nullptr;
-    HRESULT hr = ppD3DCompile( pData, DataLength, srcName, pDefines, pInclude, "", "fx_5_0", HLSLFlags, FXFlags, &blob, ppErrors );
+    HRESULT hr = D3DCompile( pData, DataLength, srcName, pDefines, pInclude, "", "fx_5_0", HLSLFlags, FXFlags, &blob, ppErrors );
     if ( FAILED(hr) )
     {
         DPF(0, "D3DCompile of fx_5_0 profile failed: %08X", hr );
@@ -230,18 +208,8 @@ lExit:
     }
     return hr;
 }
-//--------------------------------------------------------------------------------------
 
-typedef HRESULT(WINAPI* D3DCOMPILEFROMFILE)(LPCWSTR pFileName,
-       CONST D3D_SHADER_MACRO* pDefines,
-       ID3DInclude* pInclude,
-       LPCSTR pEntrypoint,
-       LPCSTR pTarget,
-       UINT Flags1,
-       UINT Flags2,
-       ID3DBlob** ppCode,
-       ID3DBlob** ppErrorMsgs);
-extern D3DCOMPILEFROMFILE pD3DCompileFromFile;
+//--------------------------------------------------------------------------------------
 
 _Use_decl_annotations_
 HRESULT D3DX11CompileEffectFromFile( LPCWSTR pFileName,
@@ -261,7 +229,7 @@ HRESULT D3DX11CompileEffectFromFile( LPCWSTR pFileName,
 
 #if (D3D_COMPILER_VERSION >= 46) && ( !defined(WINAPI_FAMILY) || ( (WINAPI_FAMILY != WINAPI_FAMILY_APP) && (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) ) )
 
-    HRESULT hr = pD3DCompileFromFile( pFileName, pDefines, pInclude, "", "fx_5_0", HLSLFlags, FXFlags, &blob, ppErrors );
+    HRESULT hr = D3DCompileFromFile( pFileName, pDefines, pInclude, "", "fx_5_0", HLSLFlags, FXFlags, &blob, ppErrors );
     if ( FAILED(hr) )
     {
         DPF(0, "D3DCompileFromFile of fx_5_0 profile failed %08X: %ls", hr, pFileName );
index 0599eabf7fc69bdba98ba12b01f706ff57a74932..f6dc192b3ea7c09868b33b2d788ea7846a9a122f 100644 (file)
@@ -5,12 +5,8 @@
 // This is the binary file interface shared between the Effects 
 // compiler and runtime.
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
index 1952d50ca9a650eb87da2792d21d561bd83b9866..0637eeefbf547d93da2ae3cdd9a6d688edda50ba 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D Effects file loading code
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
 
 #define PRIVATENEW new(m_BulkHeap)
 
-typedef HRESULT(WINAPI* D3DREFLECT)(LPCVOID pSrcData, SIZE_T SrcDataSize, REFIID pInterface, void **ppReflector);
-extern D3DREFLECT pD3DReflect;
-typedef HRESULT(WINAPI *D3DGETBLOBPART)(LPCVOID pSrcData, SIZE_T SrcDataSize, D3D_BLOB_PART Part, UINT Flags, ID3DBlob** ppPart);
-extern D3DGETBLOBPART pD3DGetBlobPart;
-
 namespace D3DX11Effects
 {
 
@@ -191,7 +182,10 @@ inline HRESULT VerifyPointer(uint32_t oBase, uint32_t dwSize, uint32_t dwMaxSize
 // A simple class which assists in adding data to a block of memory
 //////////////////////////////////////////////////////////////////////////
 
-CEffectHeap::CEffectHeap() : m_pData(nullptr), m_dwSize(0), m_dwBufferSize(0)
+CEffectHeap::CEffectHeap() noexcept :
+    m_pData(nullptr),
+    m_dwSize(0),
+    m_dwBufferSize(0)
 {
 }
 
@@ -399,6 +393,35 @@ lExit:
 // A helper class which loads an effect
 //////////////////////////////////////////////////////////////////////////
 
+CEffectLoader::CEffectLoader() noexcept :
+    m_pData(nullptr),
+    m_pHeader(nullptr),
+    m_Version(0),
+    m_pEffect(nullptr),
+    m_pReflection(nullptr),
+    m_dwBufferSize(0),
+    m_pOldVars(nullptr),
+    m_pOldShaders(nullptr),
+    m_pOldDS(nullptr),
+    m_pOldAB(nullptr),
+    m_pOldRS(nullptr),
+    m_pOldCBs(nullptr),
+    m_pOldSamplers(nullptr),
+    m_OldInterfaceCount(0),
+    m_pOldInterfaces(nullptr),
+    m_pOldShaderResources(nullptr),
+    m_pOldUnorderedAccessViews(nullptr),
+    m_pOldRenderTargetViews(nullptr),
+    m_pOldDepthStencilViews(nullptr),
+    m_pOldStrings(nullptr),
+    m_pOldMemberDataBlocks(nullptr),
+    m_pvOldMemberInterfaces(nullptr),
+    m_pOldGroups(nullptr),
+    m_EffectMemory(0),
+    m_ReflectionMemory(0)
+{
+}
+
 _Use_decl_annotations_
 HRESULT CEffectLoader::GetUnstructuredDataBlock(uint32_t offset, uint32_t  *pdwSize, void **ppData)
 {
@@ -1792,8 +1815,8 @@ HRESULT CEffectLoader::LoadAssignments( uint32_t Assignments, SAssignment **ppAs
             // Inline shader assignments must be object types
             assert(pAssignment->IsObjectAssignment());
 
-            C_ASSERT( offsetof(SBinaryAssignment::SInlineShader,oShader) == offsetof(SBinaryShaderData5,oShader) );
-            C_ASSERT( offsetof(SBinaryAssignment::SInlineShader,oSODecl) == offsetof(SBinaryShaderData5,oSODecls) );
+            static_assert(offsetof(SBinaryAssignment::SInlineShader, oShader) == offsetof(SBinaryShaderData5, oShader), "ECAT_InlineShader issue");
+            static_assert(offsetof(SBinaryAssignment::SInlineShader, oSODecl) == offsetof(SBinaryShaderData5, oSODecls), "ECAT_InlineShader5 issue");
             if( psAssignments[i].AssignmentType == ECAT_InlineShader )
             {
                 VHD( m_msUnstructured.ReadAtOffset(psAssignments[i].oInitializer, sizeof(*psInlineShader), (void**) &psInlineShader),
@@ -2050,8 +2073,8 @@ HRESULT CEffectLoader::LoadObjectVariables()
                     SBinaryShaderData5 *psInlineShader5;
                 };
 
-                C_ASSERT( offsetof(SBinaryGSSOInitializer,oShader) == 0 );
-                C_ASSERT( offsetof(SBinaryShaderData5,oShader) == 0 );
+                static_assert(offsetof(SBinaryGSSOInitializer, oShader) == 0, "Union issue");
+                static_assert(offsetof(SBinaryShaderData5, oShader) == 0, "Union issue");
 
 
                 pShaderBlock = &m_pEffect->m_pShaderBlocks[m_pEffect->m_ShaderBlockCount];
@@ -2627,7 +2650,7 @@ HRESULT CEffectLoader::GrabShaderData(SShaderBlock *pShaderBlock)
                             }
                             else
                             {
-                                DPF(0, "%s: Sampler %s[%u] does not have a texture bound to it, even though the sampler array is used in a DX9-style texture load instruction", g_szEffectLoadArea, pName, j);
+                                DPF(0, "%s: Sampler %s[%zu] does not have a texture bound to it, even though the sampler array is used in a DX9-style texture load instruction", g_szEffectLoadArea, pName, j);
                             }
                         
                             VH( E_FAIL );
@@ -3083,7 +3106,7 @@ HRESULT CEffectLoader::BuildShaderBlock(SShaderBlock *pShaderBlock)
     }
 
     // Initialize the reflection interface
-    VHD(pD3DReflect( pShaderBlock->pReflectionData->pBytecode, pShaderBlock->pReflectionData->BytecodeLength, IID_ID3D11ShaderReflection, (void**)&pShaderBlock->pReflectionData->pReflection ),
+    VHD( D3DReflect( pShaderBlock->pReflectionData->pBytecode, pShaderBlock->pReflectionData->BytecodeLength, IID_ID3D11ShaderReflection, (void**)&pShaderBlock->pReflectionData->pReflection ),
          "Internal loading error: cannot create shader reflection object." );
 
     // Get dependencies
@@ -3093,7 +3116,7 @@ HRESULT CEffectLoader::BuildShaderBlock(SShaderBlock *pShaderBlock)
     if( EOT_VertexShader == pShaderBlock->GetShaderType() )
     {
         assert( pShaderBlock->pInputSignatureBlob == nullptr );
-        VHD(pD3DGetBlobPart( pShaderBlock->pReflectionData->pBytecode, pShaderBlock->pReflectionData->BytecodeLength,
+        VHD( D3DGetBlobPart( pShaderBlock->pReflectionData->pBytecode, pShaderBlock->pReflectionData->BytecodeLength, 
                              D3D_BLOB_INPUT_SIGNATURE_BLOB, 0,
                              &pShaderBlock->pInputSignatureBlob ),
              "Internal loading error: cannot get input signature." );
index 238a0b3ae657468800cc1ca0228f99d5c0abbd8b..6bdb8a2fc94162cad27b7470e340e19163ba33ae 100644 (file)
@@ -4,12 +4,8 @@
 // Direct3D 11 Effects header for the FX file loader 
 // A CEffectLoader is created at load time to facilitate loading
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -36,6 +32,12 @@ struct SRange
     uint32_t              start;
     uint32_t              last;
     CEffectVector<void *> vResources; // should be (last - start) in length, resource type depends on the range type
+
+    SRange() noexcept :
+        start(0),
+        last(0)
+    {
+    }
 };
 
 // Used during load to validate assignments
@@ -77,7 +79,7 @@ protected:
     SRasterizerBlock            *m_pOldRS;
     SConstantBuffer             *m_pOldCBs;
     SSamplerBlock               *m_pOldSamplers;
-    uint32_t                        m_OldInterfaceCount;
+    uint32_t                     m_OldInterfaceCount;
     SInterface                  *m_pOldInterfaces;
     SShaderResource             *m_pOldShaderResources;
     SUnorderedAccessView        *m_pOldUnorderedAccessViews;
@@ -147,10 +149,11 @@ protected:
     HRESULT GetUnstructuredDataBlock(_In_ uint32_t offset, _Out_ uint32_t *pdwSize, _Outptr_result_buffer_(*pdwSize) void **ppData);
     // This function makes a copy of the array of SInterfaceParameters, but not a copy of the strings
     HRESULT GetInterfaceParametersAndAddToReflection( _In_ uint32_t InterfaceCount, _In_ uint32_t offset, _Outptr_result_buffer_all_maybenull_(InterfaceCount) SShaderBlock::SInterfaceParameter **ppInterfaces );
+
 public:
+    CEffectLoader() noexcept;
 
     HRESULT LoadEffect(_In_ CEffect *pEffect, _In_reads_bytes_(cbEffectBuffer) const void *pEffectBuffer, _In_ uint32_t cbEffectBuffer);
 };
 
-
-}
\ No newline at end of file
+}
index 75114121ce2a2fbbfb9766bf6007091394380082..c2b2014c51b9d2f8627e0d98765b53f9de34dd01 100644 (file)
@@ -6,12 +6,8 @@
 // are typically called when creating, cloning, or optimizing an 
 // Effect, or reflecting a variable.
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -24,53 +20,52 @@ namespace D3DX11Effects
 
 extern SUnorderedAccessView g_NullUnorderedAccessView;
 
-SBaseBlock::SBaseBlock()
-: BlockType(EBT_Invalid)
-, IsUserManaged(false)
-, AssignmentCount(0)
-, pAssignments(nullptr)
+SBaseBlock::SBaseBlock() noexcept :
+    BlockType(EBT_Invalid),
+    IsUserManaged(false),
+    AssignmentCount(0),
+    pAssignments(nullptr)
 {
-
 }
 
-SPassBlock::SPassBlock()
+SPassBlock::SPassBlock() noexcept :
+    BackingStore{},
+    pName(nullptr),
+    AnnotationCount(0),
+    pAnnotations(nullptr),
+    pEffect(nullptr),
+    InitiallyValid(true),
+    HasDependencies(false)
 {
-    pName = nullptr;
-    AnnotationCount = 0;
-    pAnnotations = nullptr;
-    InitiallyValid = true;
-    HasDependencies = false;
-    ZeroMemory(&BackingStore, sizeof(BackingStore));
 }
 
-STechnique::STechnique()
-: pName(nullptr)
-, PassCount(0)
-, pPasses(nullptr)
-, AnnotationCount(0)
-, pAnnotations(nullptr)
-, InitiallyValid( true )
-, HasDependencies( false )
+STechnique::STechnique() noexcept :
+    pName(nullptr),
+    PassCount(0),
+    pPasses(nullptr),
+    AnnotationCount(0),
+    pAnnotations(nullptr),
+    InitiallyValid( true ),
+    HasDependencies( false )
 {
 }
 
-SGroup::SGroup()
-: pName(nullptr)
-, TechniqueCount(0)
-, pTechniques(nullptr)
-, AnnotationCount(0)
-, pAnnotations(nullptr)
-, InitiallyValid( true )
-, HasDependencies( false )
+SGroup::SGroup() noexcept :
+    pName(nullptr),
+    TechniqueCount(0),
+    pTechniques(nullptr),
+    AnnotationCount(0),
+    pAnnotations(nullptr),
+    InitiallyValid( true ),
+    HasDependencies( false )
 {
 }
 
-SDepthStencilBlock::SDepthStencilBlock()
+SDepthStencilBlock::SDepthStencilBlock() noexcept :
+    pDSObject(nullptr),
+    BackingStore{},
+    IsValid(true)
 {
-    pDSObject = nullptr;
-    ZeroMemory(&BackingStore, sizeof(BackingStore));
-    IsValid = true;
-
     BackingStore.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
     BackingStore.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
     BackingStore.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
@@ -87,12 +82,11 @@ SDepthStencilBlock::SDepthStencilBlock()
     BackingStore.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;
 }
 
-SBlendBlock::SBlendBlock()
+SBlendBlock::SBlendBlock() noexcept :
+    pBlendObject(nullptr),
+    BackingStore{},
+    IsValid(true)
 {
-    pBlendObject = nullptr;
-    ZeroMemory(&BackingStore, sizeof(BackingStore));
-    IsValid = true;
-
     BackingStore.AlphaToCoverageEnable = false;
     BackingStore.IndependentBlendEnable = true;
     for( size_t i=0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; i++ )
@@ -107,12 +101,11 @@ SBlendBlock::SBlendBlock()
     }
 }
 
-SRasterizerBlock::SRasterizerBlock()
+SRasterizerBlock::SRasterizerBlock() noexcept :
+    pRasterizerObject(nullptr),
+    BackingStore{},
+    IsValid(true)
 {
-    pRasterizerObject = nullptr;
-    ZeroMemory(&BackingStore, sizeof(BackingStore));
-    IsValid = true;
-
     BackingStore.AntialiasedLineEnable = false;
     BackingStore.CullMode = D3D11_CULL_BACK;
     BackingStore.DepthBias = D3D11_DEFAULT_DEPTH_BIAS;
@@ -125,11 +118,10 @@ SRasterizerBlock::SRasterizerBlock()
     BackingStore.DepthClipEnable = true;
 }
 
-SSamplerBlock::SSamplerBlock()
+SSamplerBlock::SSamplerBlock() noexcept :
+    pD3DObject(nullptr),
+    BackingStore{}
 {
-    pD3DObject = nullptr;
-    ZeroMemory(&BackingStore, sizeof(BackingStore));
-
     BackingStore.SamplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
     BackingStore.SamplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
     BackingStore.SamplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
@@ -145,35 +137,25 @@ SSamplerBlock::SSamplerBlock()
     BackingStore.SamplerDesc.MaxLOD = FLT_MAX;
 }
 
-SShaderBlock::SShaderBlock(SD3DShaderVTable *pVirtualTable)
+SShaderBlock::SShaderBlock(SD3DShaderVTable *pVirtualTable) noexcept :
+    IsValid(true),
+    pVT(pVirtualTable),
+    pReflectionData(nullptr),
+    pD3DObject(nullptr),
+    CBDepCount(0),
+    pCBDeps(nullptr),
+    SampDepCount(0),
+    pSampDeps(nullptr),
+    InterfaceDepCount(0),
+    pInterfaceDeps(nullptr),
+    ResourceDepCount(0),
+    pResourceDeps(nullptr),
+    UAVDepCount(0),
+    pUAVDeps(nullptr),
+    TBufferDepCount(0),
+    ppTbufDeps(nullptr),
+    pInputSignatureBlob(nullptr)
 {
-    IsValid = true;
-
-    pVT = pVirtualTable;
-
-    pReflectionData = nullptr;
-    
-    pD3DObject = nullptr;
-
-    CBDepCount = 0;
-    pCBDeps = nullptr;
-
-    SampDepCount = 0;
-    pSampDeps = nullptr;
-
-    InterfaceDepCount = 0;
-    pInterfaceDeps = nullptr;
-
-    ResourceDepCount = 0;
-    pResourceDeps = nullptr;
-
-    UAVDepCount = 0;
-    pUAVDeps = nullptr;
-
-    TBufferDepCount = 0;
-    ppTbufDeps = nullptr;
-
-    pInputSignatureBlob = nullptr;
 }
 
 HRESULT SShaderBlock::OnDeviceBind()
@@ -540,7 +522,7 @@ HRESULT SShaderBlock::GetSignatureElementDesc(ESigType SigType, uint32_t Element
         D3D11_SHADER_DESC ShaderDesc;
         VH( pReflectionData->pReflection->GetDesc( &ShaderDesc ) );
 
-        D3D11_SIGNATURE_PARAMETER_DESC ParamDesc ={0};
+        D3D11_SIGNATURE_PARAMETER_DESC ParamDesc ={};
         if( pReflectionData->IsNullGS )
         {
             switch( SigType )
@@ -619,21 +601,6 @@ lExit:
     return hr;
 }
 
-SString::SString()
-{
-    pString = nullptr;
-}
-
-SRenderTargetView::SRenderTargetView()
-{
-    pRenderTargetView = nullptr;
-}
-
-SDepthStencilView::SDepthStencilView()
-{
-    pDepthStencilView = nullptr;
-}
-
 void * GetBlockByIndex(EVarType VarType, EObjectType ObjectType, void *pBaseBlock, uint32_t Index)
 {
     switch( VarType )
@@ -709,58 +676,54 @@ void * GetBlockByIndex(EVarType VarType, EObjectType ObjectType, void *pBaseBloc
 // CEffect
 //--------------------------------------------------------------------------------------
 
-CEffect::CEffect( uint32_t Flags )
+CEffect::CEffect( uint32_t Flags ) noexcept :
+    m_RefCount(1),
+    m_Flags(Flags),
+    m_pReflection(nullptr),
+    m_VariableCount(0),
+    m_pVariables(nullptr),
+    m_AnonymousShaderCount(0),
+    m_pAnonymousShaders(nullptr),
+    m_TechniqueCount(0),
+    m_GroupCount(0),
+    m_pGroups(nullptr),
+    m_pNullGroup(nullptr),
+    m_ShaderBlockCount(0),
+    m_pShaderBlocks(nullptr),
+    m_DepthStencilBlockCount(0),
+    m_pDepthStencilBlocks(nullptr),
+    m_BlendBlockCount(0),
+    m_pBlendBlocks(nullptr),
+    m_RasterizerBlockCount(0),
+    m_pRasterizerBlocks(nullptr),
+    m_SamplerBlockCount(0),
+    m_pSamplerBlocks(nullptr),
+    m_MemberDataCount(0),
+    m_pMemberDataBlocks(nullptr),
+    m_InterfaceCount(0),
+    m_pInterfaces(nullptr),
+    m_CBCount(0),
+    m_pCBs(nullptr),
+    m_StringCount(0),
+    m_pStrings(nullptr),
+    m_ShaderResourceCount(0),
+    m_pShaderResources(nullptr),
+    m_UnorderedAccessViewCount(0),
+    m_pUnorderedAccessViews(nullptr),
+    m_RenderTargetViewCount(0),
+    m_pRenderTargetViews(nullptr),
+    m_DepthStencilViewCount(0),
+    m_pDepthStencilViews(nullptr),
+    m_LocalTimer(1),
+    m_FXLIndex(0),
+    m_pDevice(nullptr),
+    m_pContext(nullptr),
+    m_pClassLinkage(nullptr),
+    m_pTypePool(nullptr),
+    m_pStringPool(nullptr),
+    m_pPooledHeap(nullptr),
+    m_pOptimizedTypeHeap(nullptr)
 {
-    m_RefCount = 1;
-
-    m_pVariables = nullptr;
-    m_pAnonymousShaders = nullptr;
-    m_pGroups = nullptr;
-    m_pNullGroup = nullptr;
-    m_pShaderBlocks = nullptr;
-    m_pDepthStencilBlocks = nullptr;
-    m_pBlendBlocks = nullptr;
-    m_pRasterizerBlocks = nullptr;
-    m_pSamplerBlocks = nullptr;
-    m_pCBs = nullptr;
-    m_pStrings = nullptr;
-    m_pMemberDataBlocks = nullptr;
-    m_pInterfaces = nullptr;
-    m_pShaderResources = nullptr;
-    m_pUnorderedAccessViews = nullptr;
-    m_pRenderTargetViews = nullptr;
-    m_pDepthStencilViews = nullptr;
-    m_pDevice = nullptr;
-    m_pClassLinkage = nullptr;
-    m_pContext = nullptr;
-
-    m_VariableCount = 0;
-    m_AnonymousShaderCount = 0;
-    m_ShaderBlockCount = 0;
-    m_DepthStencilBlockCount = 0;
-    m_BlendBlockCount = 0;
-    m_RasterizerBlockCount = 0;
-    m_SamplerBlockCount = 0;
-    m_StringCount = 0;
-    m_MemberDataCount = 0;
-    m_InterfaceCount = 0;
-    m_ShaderResourceCount = 0;
-    m_UnorderedAccessViewCount = 0;
-    m_RenderTargetViewCount = 0;
-    m_DepthStencilViewCount = 0;
-    m_CBCount = 0;
-    m_TechniqueCount = 0;
-    m_GroupCount = 0;
-
-    m_pReflection = nullptr;
-    m_LocalTimer = 1;
-    m_Flags = Flags;
-    m_FXLIndex = 0;
-
-    m_pTypePool = nullptr;
-    m_pStringPool = nullptr;
-    m_pPooledHeap = nullptr;
-    m_pOptimizedTypeHeap = nullptr;
 }
 
 void CEffect::ReleaseShaderRefection()
@@ -789,9 +752,8 @@ CEffect::~CEffect()
 
     if (pInfoQueue)
     {
-        D3D11_INFO_QUEUE_FILTER filter;
+        D3D11_INFO_QUEUE_FILTER filter = {};
         D3D11_MESSAGE_CATEGORY messageCategory = D3D11_MESSAGE_CATEGORY_STATE_SETTING;
-        ZeroMemory(&filter, sizeof(filter));
 
         filter.DenyList.NumCategories = 1;
         filter.DenyList.pCategoryList = &messageCategory;
index 4ed057b98b52c111f1a10b6d98e2a2b393237e2f..b4207e0a82b6c656a96dd65904a9293b6ff259c1 100644 (file)
@@ -3,13 +3,8 @@
 //
 // Direct3D 11 Effects public reflection APIs
 //
-//
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -601,7 +596,8 @@ lExit:
 // ID3DX11EffectShaderVariable (SAnonymousShader implementation)
 ////////////////////////////////////////////////////////////////////////////////
 
-SAnonymousShader::SAnonymousShader(_In_opt_ SShaderBlock *pBlock) : pShaderBlock(pBlock)
+SAnonymousShader::SAnonymousShader(_In_opt_ SShaderBlock *pBlock) noexcept :
+    pShaderBlock(pBlock)
 {
 }
 
@@ -2107,7 +2103,7 @@ ID3DX11EffectTechnique * CEffect::GetTechniqueByName(_In_z_ LPCSTR Name)
 
     if( FAILED( strcpy_s( NameCopy, MAX_GROUP_TECHNIQUE_SIZE, Name ) ) )
     {
-        DPF( 0, "Group|Technique name has a length greater than %u.", MAX_GROUP_TECHNIQUE_SIZE );
+        DPF( 0, "Group|Technique name has a length greater than %zu.", MAX_GROUP_TECHNIQUE_SIZE );
         return &g_InvalidTechnique;
     }
 
index fcbfb17dc2f7a2a2d19322338ac7f55e5cbb3533..4ef83e5455c2163aaaf57a14056d7dbec76a2696 100644 (file)
@@ -5,12 +5,8 @@
 // These functions are expected to be called at high frequency
 // (when applying a pass).
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -643,11 +639,11 @@ void CEffect::IncrementTimer()
 {
     m_LocalTimer++;
 
-#ifndef _M_X64
+#if !defined(_M_X64) && !defined(_M_ARM64)
 #if _DEBUG
     if (m_LocalTimer > g_TimerRolloverCount)
     {
-        DPF(0, "Rolling over timer (current time: %u, rollover cap: %u).", m_LocalTimer, g_TimerRolloverCount);
+        DPF(0, "Rolling over timer (current time: %zu, rollover cap: %u).", m_LocalTimer, g_TimerRolloverCount);
 #else
     if (m_LocalTimer >= 0x80000000) // check to see if we've exceeded ~2 billion
     {
index dbd29ba6c32b81589ae1345f5eef9bc8ae3e88f8..7363781b99b8542b872e0cfef49fafa9500c0387 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D 11 Effects States Header
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
index a47ae409ffde0faf4e3d6ab41ed35ce29d682fb1..f48805042003415aebab9ca8cc090d3f564d0228 100644 (file)
@@ -5,12 +5,8 @@
 // This file defines properties of states which can appear in
 // state blocks and pass blocks.
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
index fdafb2abea9693eb568b78dfd85bdfcc9420f224..fbcb4fe5608a58ade451b2f980517b26a7bf4744 100644 (file)
@@ -4,12 +4,8 @@
 // Direct3D 11 Effects Variable reflection template
 // These templates define the many Effect variable types.
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -1185,7 +1181,8 @@ struct TTopLevelVariable : public SVariable, public IBaseInterface
         return pEffect;
     }
 
-    TTopLevelVariable() : pEffect (nullptr)
+    TTopLevelVariable() noexcept :
+        pEffect(nullptr)
     {
     }
 
@@ -1224,10 +1221,10 @@ struct TMember : public SVariable, public IBaseInterface
     // Required to create member/element variable interfaces
     TTopLevelVariable<ID3DX11EffectVariable>    *pTopLevelEntity;
 
-    TMember()
+    TMember() noexcept :
+        IsSingleElement(false),
+        pTopLevelEntity(nullptr)
     {
-        IsSingleElement = false;
-        pTopLevelEntity = nullptr;
     }
 
     CEffect* GetEffect()
@@ -1394,10 +1391,10 @@ struct TGlobalVariable : public TVariable<TTopLevelVariable<IBaseInterface> >
     // if numeric, pointer to the constant buffer where this variable lives
     SConstantBuffer *pCB;
 
-    uint32_t            AnnotationCount;
+    uint32_t        AnnotationCount;
     SAnnotation     *pAnnotations;
 
-    TGlobalVariable() :
+    TGlobalVariable() noexcept :
         LastModifiedTime(0),
         pCB(nullptr),
         AnnotationCount(0),
index 01e46f4498f33dd8131ad4b7dee685bd7680f0ea..a08b7b6de2cad8522e12f1ac2202782bd6aeffb4 100644 (file)
@@ -6,12 +6,8 @@
 // Lifetime for most Effects objects is based on the the lifetime of the master
 // effect, so the reference count is not used.
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
index 73617f0821f91f41e330f29e4c36b497ede9fa8f..0082b97ca3d573c26ca4aa5a98279291995672c6 100644 (file)
@@ -1,6 +1,6 @@
                                The MIT License (MIT)
 
-Copyright (c) 2017 Microsoft Corp
+Copyright (c) 2009-2020 Microsoft Corp
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this 
 software and associated documentation files (the "Software"), to deal in the Software 
index e8ef281f24ddae9ee67a99f0eccd60176d3f2eae..0ab54d87863c253037b37e65f9f72e3fdd93137a 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D 11 Effects Stream Out Decl Parser
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -36,11 +32,11 @@ class CSOParser
     char                                        m_pError[ MAX_ERROR_SIZE + 1 ];                 // Error buffer
 
 public:
-    CSOParser()
+    CSOParser() noexcept :
+        m_newEntry{},
+        m_SemanticString{},
+        m_pError{}
     {
-        ZeroMemory(&m_newEntry, sizeof(m_newEntry));
-        ZeroMemory(m_SemanticString, sizeof(m_SemanticString));
-        m_pError[0] = 0;
     }
 
     ~CSOParser()
index 893b0597434f11b304cb46d09de6103d36875bf6..d2663aca99eb8c79ee17cf6759e4c365cdcf31e9 100644 (file)
@@ -3,23 +3,18 @@
 //
 // Direct3D 11 Effect Types & APIs Header
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
 
 #pragma once
 
-#define D3DX11_EFFECTS_VERSION 1121
+#define D3DX11_EFFECTS_VERSION 1126
 
 #if defined(_XBOX_ONE) && defined(_TITLE)
 #include <d3d11_x.h>
-#define DCOMMON_H_INCLUDED
 #define NO_D3D11_DEBUG_NAME
 #else
 #include <d3d11_1.h>
@@ -1195,6 +1190,23 @@ HRESULT D3DX11CompileEffectFromFile( _In_z_ LPCWSTR pFileName,
                                      _Out_ ID3DX11Effect **ppEffect,
                                      _Outptr_opt_result_maybenull_ ID3DBlob **ppErrors );
 
+
+//----------------------------------------------------------------------------
+// D3DX11DebugMute
+//
+// Controls the output of diagnostic information in DEBUG builds. No effect
+// in RELEASE builds.
+//
+// Returns the previous state so you can do temporary suppression like:
+//
+//    bool oldmute = D3DX11DebugMute(true);
+//    ...
+//    D3DX11DebugMute(oldmute);
+//
+//----------------------------------------------------------------------------
+
+bool D3DX11DebugMute(bool mute);
+
 #ifdef __cplusplus
 }
 #endif //__cplusplus
index af786c81b4bd26722a6397a09db44d7ba809b3c2..366f697114d7d507e80bd59d886ed1183571afe2 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D 11 Effects implementation for helper data structures
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
 namespace D3DX11Core
 {
 
-//////////////////////////////////////////////////////////////////////////
-// CMemoryStream - A class to simplify reading binary data
-//////////////////////////////////////////////////////////////////////////
+    //////////////////////////////////////////////////////////////////////////
+    // CMemoryStream - A class to simplify reading binary data
+    //////////////////////////////////////////////////////////////////////////
 
-CMemoryStream::CMemoryStream() : m_pData(nullptr), m_cbData(0), m_readPtr(0)
-{
-}
+    CMemoryStream::CMemoryStream() noexcept :
+        m_pData(nullptr),
+        m_cbData(0),
+        m_readPtr(0)
+    {
+    }
 
-CMemoryStream::~CMemoryStream()
-{
-}
+    CMemoryStream::~CMemoryStream()
+    {
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::SetData(const void *pData, size_t size)
-{
-    m_pData = (uint8_t*) pData;
-    m_cbData = size;
-    m_readPtr = 0;
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::SetData(const void* pData, size_t size)
+    {
+        m_pData = (uint8_t*)pData;
+        m_cbData = size;
+        m_readPtr = 0;
 
-    return S_OK;
-}
+        return S_OK;
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::ReadAtOffset(size_t offset, size_t size, void **ppData)
-{
-    if (offset >= m_cbData)
-        return E_FAIL;
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::ReadAtOffset(size_t offset, size_t size, void** ppData)
+    {
+        if (offset >= m_cbData)
+            return E_FAIL;
 
-    m_readPtr = offset;
-    return Read(ppData, size);
-}
+        m_readPtr = offset;
+        return Read(ppData, size);
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::ReadAtOffset(size_t offset, LPCSTR *ppString)
-{
-    if (offset >= m_cbData)
-        return E_FAIL;
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::ReadAtOffset(size_t offset, LPCSTR* ppString)
+    {
+        if (offset >= m_cbData)
+            return E_FAIL;
 
-    m_readPtr = offset;
-    return Read(ppString);
-}
+        m_readPtr = offset;
+        return Read(ppString);
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::Read(void **ppData, size_t size)
-{
-    size_t temp = m_readPtr + size;
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::Read(void** ppData, size_t size)
+    {
+        size_t temp = m_readPtr + size;
 
-    if (temp < m_readPtr || temp > m_cbData)
-        return E_FAIL;
+        if (temp < m_readPtr || temp > m_cbData)
+            return E_FAIL;
 
-    *ppData = m_pData + m_readPtr;
-    m_readPtr = temp;
-    return S_OK;
-}
+        *ppData = m_pData + m_readPtr;
+        m_readPtr = temp;
+        return S_OK;
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::Read(uint32_t *pDword)
-{
-    uint32_t *pTempDword;
-    HRESULT hr;
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::Read(uint32_t* pDword)
+    {
+        uint32_t* pTempDword;
+        HRESULT hr;
 
-    hr = Read((void**) &pTempDword, sizeof(uint32_t));
-    if (FAILED(hr))
-        return E_FAIL;
+        hr = Read((void**)&pTempDword, sizeof(uint32_t));
+        if (FAILED(hr))
+            return E_FAIL;
 
-    *pDword = *pTempDword;
-    return S_OK;
-}
+        *pDword = *pTempDword;
+        return S_OK;
+    }
 
-_Use_decl_annotations_
-HRESULT CMemoryStream::Read(LPCSTR *ppString)
-{
-    size_t iChar=m_readPtr;
-    for(; m_pData[iChar]; iChar++)
+    _Use_decl_annotations_
+        HRESULT CMemoryStream::Read(LPCSTR* ppString)
     {
-        if (iChar > m_cbData)
-            return E_FAIL;      
-    }
+        size_t iChar = m_readPtr;
+        for (; m_pData[iChar]; iChar++)
+        {
+            if (iChar > m_cbData)
+                return E_FAIL;
+        }
 
-    *ppString = (LPCSTR) (m_pData + m_readPtr);
-    m_readPtr = iChar;
+        *ppString = (LPCSTR)(m_pData + m_readPtr);
+        m_readPtr = iChar;
 
-    return S_OK;
-}
+        return S_OK;
+    }
 
-size_t CMemoryStream::GetPosition()
-{
-    return m_readPtr;
-}
+    size_t CMemoryStream::GetPosition()
+    {
+        return m_readPtr;
+    }
 
-HRESULT CMemoryStream::Seek(_In_ size_t offset)
-{
-    if (offset > m_cbData)
-        return E_FAIL;
+    HRESULT CMemoryStream::Seek(_In_ size_t offset)
+    {
+        if (offset > m_cbData)
+            return E_FAIL;
 
-    m_readPtr = offset;
-    return S_OK;
-}
+        m_readPtr = offset;
+        return S_OK;
+    }
 
 }
 
@@ -128,7 +127,7 @@ HRESULT CMemoryStream::Seek(_In_ size_t offset)
 // CDataBlock - used to dynamically build up the effect file in memory
 //////////////////////////////////////////////////////////////////////////
 
-CDataBlock::CDataBlock() :
+CDataBlock::CDataBlock() noexcept :
     m_size(0),
     m_maxSize(0),
     m_pData(nullptr),
@@ -149,18 +148,18 @@ void CDataBlock::EnableAlignment()
 }
 
 _Use_decl_annotations_
-HRESULT CDataBlock::AddData(const void *pvNewData, uint32_t bufferSize, CDataBlock **ppBlock)
+HRESULT CDataBlock::AddData(const void* pvNewData, uint32_t bufferSize, CDataBlock** ppBlock)
 {
     HRESULT hr = S_OK;
     uint32_t bytesToCopy;
-    const uint8_t *pNewData = (const uint8_t*) pvNewData;
+    const uint8_t* pNewData = (const uint8_t*)pvNewData;
 
     if (m_maxSize == 0)
     {
         // This is a brand new DataBlock, fill it up
         m_maxSize = std::max<uint32_t>(8192, bufferSize);
 
-        VN( m_pData = new uint8_t[m_maxSize] );
+        VN(m_pData = new uint8_t[m_maxSize]);
     }
 
     assert(m_pData == AlignToPowerOf2(m_pData, c_DataAlignment));
@@ -168,7 +167,7 @@ HRESULT CDataBlock::AddData(const void *pvNewData, uint32_t bufferSize, CDataBlo
     bytesToCopy = std::min(m_maxSize - m_size, bufferSize);
     memcpy(m_pData + m_size, pNewData, bytesToCopy);
     pNewData += bytesToCopy;
-    
+
     if (m_IsAligned)
     {
         assert(m_size == AlignToPowerOf2(m_size, c_DataAlignment));
@@ -178,7 +177,7 @@ HRESULT CDataBlock::AddData(const void *pvNewData, uint32_t bufferSize, CDataBlo
     {
         m_size += bytesToCopy;
     }
-    
+
     bufferSize -= bytesToCopy;
     *ppBlock = this;
 
@@ -187,12 +186,12 @@ HRESULT CDataBlock::AddData(const void *pvNewData, uint32_t bufferSize, CDataBlo
         assert(nullptr == m_pNext); // make sure we're not overwriting anything
 
         // Couldn't fit all data into this block, spill over into next
-        VN( m_pNext = new CDataBlock() );
+        VN(m_pNext = new CDataBlock());
         if (m_IsAligned)
         {
             m_pNext->EnableAlignment();
         }
-        VH( m_pNext->AddData(pNewData, bufferSize, ppBlock) );
+        VH(m_pNext->AddData(pNewData, bufferSize, ppBlock));
     }
 
 lExit:
@@ -200,9 +199,9 @@ lExit:
 }
 
 _Use_decl_annotations_
-void* CDataBlock::Allocate(uint32_t bufferSize, CDataBlock **ppBlock)
+void* CDataBlock::Allocate(uint32_t bufferSize, CDataBlock** ppBlock)
 {
-    void *pRetValue;
+    voidpRetValue;
     uint32_t temp = m_size + bufferSize;
 
     if (temp < m_size)
@@ -255,7 +254,7 @@ void* CDataBlock::Allocate(uint32_t bufferSize, CDataBlock **ppBlock)
 
 //////////////////////////////////////////////////////////////////////////
 
-CDataBlockStore::CDataBlockStore() :
+CDataBlockStore::CDataBlockStore() noexcept :
     m_pFirst(nullptr),
     m_pLast(nullptr),
     m_Size(0),
@@ -271,7 +270,7 @@ CDataBlockStore::~CDataBlockStore()
 {
     // Can't just do SAFE_DELETE(m_pFirst) since it blows the stack when deleting long chains of data
     CDataBlock* pData = m_pFirst;
-    while(pData)
+    while (pData)
     {
         CDataBlock* pCurrent = pData;
         pData = pData->m_pNext;
@@ -288,20 +287,20 @@ void CDataBlockStore::EnableAlignment()
 }
 
 _Use_decl_annotations_
-HRESULT CDataBlockStore::AddString(LPCSTR pString, uint32_t *pOffset)
+HRESULT CDataBlockStore::AddString(LPCSTR pString, uint32_tpOffset)
 {
     size_t strSize = strlen(pString) + 1;
-    assert( strSize <= 0xffffffff );
+    assert(strSize <= 0xffffffff);
     return AddData(pString, (uint32_t)strSize, pOffset);
 }
 
 _Use_decl_annotations_
-HRESULT CDataBlockStore::AddData(const void *pNewData, uint32_t bufferSize, uint32_t *pCurOffset)
+HRESULT CDataBlockStore::AddData(const void* pNewData, uint32_t bufferSize, uint32_t* pCurOffset)
 {
     HRESULT hr = S_OK;
 
     if (bufferSize == 0)
-    {        
+    {
         if (pCurOffset)
         {
             *pCurOffset = 0;
@@ -311,7 +310,7 @@ HRESULT CDataBlockStore::AddData(const void *pNewData, uint32_t bufferSize, uint
 
     if (!m_pFirst)
     {
-        VN( m_pFirst = new CDataBlock() );
+        VN(m_pFirst = new CDataBlock());
         if (m_IsAligned)
         {
             m_pFirst->EnableAlignment();
@@ -322,7 +321,7 @@ HRESULT CDataBlockStore::AddData(const void *pNewData, uint32_t bufferSize, uint
     if (pCurOffset)
         *pCurOffset = m_Size + m_Offset;
 
-    VH( m_pLast->AddData(pNewData, bufferSize, &m_pLast) );
+    VH(m_pLast->AddData(pNewData, bufferSize, &m_pLast));
     m_Size += bufferSize;
 
 lExit:
@@ -331,7 +330,7 @@ lExit:
 
 void* CDataBlockStore::Allocate(_In_ uint32_t bufferSize)
 {
-    void *pRetValue = nullptr;
+    voidpRetValue = nullptr;
 
 #if _DEBUG
     m_cAllocations++;
@@ -368,14 +367,26 @@ uint32_t CDataBlockStore::GetSize()
 
 //////////////////////////////////////////////////////////////////////////
 
+static bool s_mute = false;
+
+bool D3DX11DebugMute(bool mute)
+{
+    bool previous = s_mute;
+    s_mute = mute;
+    return previous;
+}
+
 #ifdef _DEBUG
 _Use_decl_annotations_
 void __cdecl D3DXDebugPrintf(UINT lvl, LPCSTR szFormat, ...)
 {
+    if (s_mute)
+        return;
+
     UNREFERENCED_PARAMETER(lvl);
 
-    char strA[4096];
-    char strB[4096];
+    char strA[4096] = {};
+    char strB[4096] = {};
 
     va_list ap;
     va_start(ap, szFormat);
index bdd738c311b3c7a897c502dcd7f108e4cf282d8c..688b003773e01def8bbbb4b71d945d8cef935882 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D 11 Effects helper defines and data structures
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------
@@ -118,13 +114,13 @@ public:
     size_t  GetPosition();
     HRESULT Seek(_In_ size_t offset);
 
-    CMemoryStream();
+    CMemoryStream() noexcept;
     ~CMemoryStream();
 };
 
 }
 
-#if defined(_DEBUG) && !defined(_M_X64)
+#if defined(_DEBUG) && !defined(_M_X64) && !defined(_M_ARM64)
 
 namespace D3DX11Debug
 {
@@ -200,7 +196,11 @@ protected:
 public:
     HRESULT m_hLastError;
 
-    CEffectVector<T>() : m_hLastError(S_OK), m_pData(nullptr), m_CurSize(0), m_MaxSize(0)
+    CEffectVector<T>() noexcept :
+        m_hLastError(S_OK),
+        m_pData(nullptr),
+        m_CurSize(0),
+        m_MaxSize(0)
     {
 #if _DEBUG
         m_pCastData = nullptr;
@@ -477,7 +477,9 @@ template <class T, T MaxValue> class CheckedNumber
     bool    m_bValid;
 
 public:
-    CheckedNumber<T, MaxValue>() : m_Value(0), m_bValid(true)
+    CheckedNumber<T, MaxValue>() noexcept :
+        m_Value(0),
+        m_bValid(true)
     {
     }
 
@@ -580,7 +582,7 @@ public:
 
     void    EnableAlignment();
 
-    CDataBlock();
+    CDataBlock() noexcept;
     ~CDataBlock();
 
     friend class CDataBlockStore;
@@ -613,7 +615,7 @@ public:
     uint32_t GetSize();
     void    EnableAlignment();
 
-    CDataBlockStore();
+    CDataBlockStore() noexcept;
     ~CDataBlockStore();
 };
 
@@ -838,7 +840,11 @@ public:
         }
     };
 
-    CEffectHashTable() : m_rgpHashEntries(nullptr), m_NumHashSlots(0), m_NumEntries(0), m_bOwnHashEntryArray(false)
+    CEffectHashTable() noexcept :
+        m_rgpHashEntries(nullptr),
+        m_NumHashSlots(0),
+        m_NumEntries(0),
+        m_bOwnHashEntryArray(false)
     {
     }
 
@@ -1234,9 +1240,9 @@ protected:
     CDataBlockStore *m_pPrivateHeap;
 
 public:
-    CEffectHashTableWithPrivateHeap()
+    CEffectHashTableWithPrivateHeap() noexcept :
+        m_pPrivateHeap(nullptr)
     {
-        m_pPrivateHeap = nullptr;
     }
 
     void Cleanup()
index dbdabb1f820bbf3a271ae8e815fdf93958d56857..1991014b7384eef2f0a81e940de619b3c42cd1b7 100644 (file)
@@ -3,12 +3,8 @@
 //
 // Direct3D 11 shader effects precompiled header
 //
-// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
-// PARTICULAR PURPOSE.
-//
 // Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
 //
 // http://go.microsoft.com/fwlink/p/?LinkId=271568
 //--------------------------------------------------------------------------------------